mirror of
https://github.com/nim-lang/Nim.git
synced 2025-12-28 17:04:41 +00:00
* Fix negative arrays for JS, refs #13966 * small extra fix: no need to .slice() cstring in JS
50 lines
906 B
Nim
50 lines
906 B
Nim
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
|
|
|
|
# #13966
|
|
var negativeIndexed: array[-2..2, int] = [0, 1, 2, 3, 4]
|
|
negativeIndexed[-1] = 2
|
|
negativeIndexed[1] = 2
|
|
doAssert negativeIndexed == [0, 2, 2, 2, 4]
|
|
|
|
test_arrayboundscheck()
|
|
{.pop.} |