* Make index out of bounds more useful by including the 'bounds'. * fixes #9880 index out of bounds (remaining cases); revives #10228 * change err msg to: `index 3 not in 0 .. 1`
This commit is contained in:
parent
8f05b34125
commit
942495611b
11 changed files with 88 additions and 36 deletions
23
tests/exception/testindexerroroutput.nims
Normal file
23
tests/exception/testindexerroroutput.nims
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
mode = ScriptMode.Verbose
|
||||
|
||||
case paramStr(3):
|
||||
of "test1":
|
||||
#543
|
||||
block:
|
||||
let s = "abc"
|
||||
discard s[len(s)]
|
||||
of "test2":
|
||||
#537
|
||||
block:
|
||||
var s = "abc"
|
||||
s[len(s)] = 'd'
|
||||
of "test3":
|
||||
#588
|
||||
block:
|
||||
let arr = ['a', 'b', 'c']
|
||||
discard arr[len(arr)]
|
||||
of "test4":
|
||||
#588
|
||||
block:
|
||||
var arr = ['a', 'b', 'c']
|
||||
arr[len(arr)] = 'd'
|
||||
31
tests/exception/tindexerrorformatbounds.nim
Normal file
31
tests/exception/tindexerrorformatbounds.nim
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
import os, osproc, strutils
|
||||
|
||||
const characters = "abcdefghijklmnopqrstuvwxyz"
|
||||
var s: string
|
||||
|
||||
# # chcks.nim:23
|
||||
# # test formatErrorIndexBound returns correct bounds
|
||||
block:
|
||||
s = characters
|
||||
try:
|
||||
discard s[0..999]
|
||||
except IndexError:
|
||||
let msg = getCurrentExceptionMsg()
|
||||
let expected = "index $# not in 0 .. $#" % [$len(s), $(len(s)-1)]
|
||||
doAssert msg.contains expected, $(msg, expected)
|
||||
|
||||
block:
|
||||
try:
|
||||
discard paramStr(999)
|
||||
except IndexError:
|
||||
let msg = getCurrentExceptionMsg()
|
||||
let expected = "index 999 not in 0 .. 0"
|
||||
doAssert msg.contains expected, $(msg, expected)
|
||||
|
||||
block:
|
||||
const nim = getCurrentCompilerExe()
|
||||
for i in 1..4:
|
||||
let (outp, errC) = execCmdEx("$# e tests/exception/testindexerroroutput.nims test$#" % [nim, $i])
|
||||
let expected = "index 3 not in 0 .. 2"
|
||||
doAssert errC != 0
|
||||
doAssert outp.contains expected, $(outp, errC, expected, i)
|
||||
Loading…
Add table
Add a link
Reference in a new issue