This commit is contained in:
Araq 2014-08-15 09:57:03 +02:00
commit ae681be629
3 changed files with 21 additions and 5 deletions

View file

@ -1118,7 +1118,6 @@ proc checkCanEval(c: PCtx; n: PNode) =
# we need to ensure that we don't evaluate 'x' here: # we need to ensure that we don't evaluate 'x' here:
# proc foo() = var x ... # proc foo() = var x ...
let s = n.sym let s = n.sym
if s.position == 0:
if s.kind in {skVar, skTemp, skLet, skParam, skResult} and if s.kind in {skVar, skTemp, skLet, skParam, skResult} and
not s.isOwnedBy(c.prc.sym) and s.owner != c.module: not s.isOwnedBy(c.prc.sym) and s.owner != c.module:
cannotEval(n) cannotEval(n)

17
tests/vm/twrongarray.nim Normal file
View file

@ -0,0 +1,17 @@
discard """
errormsg: "cannot evaluate at compile time: size"
line: 16
"""
#bug #1343
when false:
proc one(dummy: int, size: int) =
var x: array[size, int] # compile error: constant expression expected
proc three(size: int) =
var x: array[size * 1, int] # compile error: cannot evaluate at compile time: size
proc two(dummy: int, size: int) =
var x: array[size * 1, int] # compiles, but shouldn't?
#assert(x.len == size) # just for fun

View file

@ -4,6 +4,6 @@ discard """
""" """
var x: array[100, char] var x: array[100, char]
template Foo : expr = x[42] template foo : expr = x[42]
const myConst = foo const myConst = foo