This commit is contained in:
parent
4ea09e4df5
commit
e4b0818629
2 changed files with 45 additions and 1 deletions
|
|
@ -1067,7 +1067,7 @@ proc genArrayAddr(p: PProc, n: PNode, r: var TCompRes) =
|
||||||
else:
|
else:
|
||||||
r.res = "chckIndx($1, $2, strlen($3))-$2" % [b.res, rope(first), a.res]
|
r.res = "chckIndx($1, $2, strlen($3))-$2" % [b.res, rope(first), a.res]
|
||||||
else:
|
else:
|
||||||
r.res = "chckIndx($1, $2, $3.length-1)-$2" % [b.res, rope(first), a.res]
|
r.res = "chckIndx($1, $2, $3.length+$2-1)-$2" % [b.res, rope(first), a.res]
|
||||||
elif first != 0:
|
elif first != 0:
|
||||||
r.res = "($1)-$2" % [b.res, rope(first)]
|
r.res = "($1)-$2" % [b.res, rope(first)]
|
||||||
else:
|
else:
|
||||||
|
|
|
||||||
44
tests/js/tarrayboundscheck.nim
Executable file
44
tests/js/tarrayboundscheck.nim
Executable file
|
|
@ -0,0 +1,44 @@
|
||||||
|
discard """
|
||||||
|
output: '''idx out of bounds: -1
|
||||||
|
month out of bounds: 0
|
||||||
|
Jan
|
||||||
|
Feb
|
||||||
|
Mar
|
||||||
|
Apr
|
||||||
|
May
|
||||||
|
Jun
|
||||||
|
Jul
|
||||||
|
Aug
|
||||||
|
Sep
|
||||||
|
Oct
|
||||||
|
Nov
|
||||||
|
Dec
|
||||||
|
month out of bounds: 13
|
||||||
|
idx out of bounds: 14
|
||||||
|
'''
|
||||||
|
"""
|
||||||
|
|
||||||
|
{.push boundChecks:on.}
|
||||||
|
|
||||||
|
# see issue #6532:
|
||||||
|
# js backend 0.17.3: array bounds check for non zero based arrays is buggy
|
||||||
|
|
||||||
|
proc test_arrayboundscheck() =
|
||||||
|
var months: array[1..12, string] =
|
||||||
|
["Jan", "Feb", "Mar", "Apr", "May", "Jun",
|
||||||
|
"Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]
|
||||||
|
|
||||||
|
var indices = [0,1,2,3,4,5,6,7,8,9,10,11,12,13]
|
||||||
|
|
||||||
|
for i in -1 .. 14:
|
||||||
|
try:
|
||||||
|
let idx = indices[i]
|
||||||
|
try:
|
||||||
|
echo months[idx]
|
||||||
|
except:
|
||||||
|
echo "month out of bounds: ", idx
|
||||||
|
except:
|
||||||
|
echo "idx out of bounds: ", i
|
||||||
|
|
||||||
|
test_arrayboundscheck()
|
||||||
|
{.pop.}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue