mirror of
https://github.com/nim-lang/Nim.git
synced 2026-03-02 06:38:31 +00:00
fixes #235
This commit is contained in:
@@ -684,6 +684,10 @@ proc genArrayElem(p: BProc, e: PNode, d: var TLoc) =
|
||||
else:
|
||||
lineCg(p, cpsStmts, "if ($1 < $2 || $1 > $3) #raiseIndexError();$n",
|
||||
[rdCharLoc(b), first, intLiteral(lastOrd(ty))])
|
||||
else:
|
||||
let idx = getOrdValue(e.sons[1])
|
||||
if idx < firstOrd(ty) or idx > lastOrd(ty):
|
||||
localError(e.info, errIndexOutOfBounds)
|
||||
if d.k == locNone: d.s = a.s
|
||||
putIntoDest(p, d, elemType(skipTypes(ty, abstractVar)),
|
||||
ropef("$1[($2)- $3]", [rdLoc(a), rdCharLoc(b), first]))
|
||||
|
||||
14
tests/reject/tinvalidarrayaccess.nim
Normal file
14
tests/reject/tinvalidarrayaccess.nim
Normal file
@@ -0,0 +1,14 @@
|
||||
discard """
|
||||
errormsg: "index out of bounds"
|
||||
line: 11
|
||||
"""
|
||||
|
||||
|
||||
type TTestArr = array[0..1, int16]
|
||||
var f: TTestArr
|
||||
f[0] = 30
|
||||
f[1] = 40
|
||||
f[2] = 50
|
||||
f[3] = 60
|
||||
|
||||
echo(repr(f))
|
||||
@@ -81,7 +81,7 @@ case $uos in
|
||||
esac
|
||||
|
||||
case $ucpu in
|
||||
*i386* | *i486* | *i586* | *i686* | *bepc* )
|
||||
*i386* | *i486* | *i586* | *i686* | *bepc* | *i86pc* )
|
||||
mycpu="i386" ;;
|
||||
*amd*64* | *x86-64* | *x86_64* )
|
||||
mycpu="amd64" ;;
|
||||
|
||||
Reference in New Issue
Block a user