mirror of
https://github.com/nim-lang/Nim.git
synced 2026-06-05 03:14:08 +00:00
fixes #1343
This commit is contained in:
@@ -1118,10 +1118,9 @@ proc checkCanEval(c: PCtx; n: PNode) =
|
||||
# we need to ensure that we don't evaluate 'x' here:
|
||||
# proc foo() = var x ...
|
||||
let s = n.sym
|
||||
if s.position == 0:
|
||||
if s.kind in {skVar, skTemp, skLet, skParam, skResult} and
|
||||
not s.isOwnedBy(c.prc.sym) and s.owner != c.module:
|
||||
cannotEval(n)
|
||||
if s.kind in {skVar, skTemp, skLet, skParam, skResult} and
|
||||
not s.isOwnedBy(c.prc.sym) and s.owner != c.module:
|
||||
cannotEval(n)
|
||||
|
||||
proc isTemp(c: PCtx; dest: TDest): bool =
|
||||
result = dest >= 0 and c.prc.slots[dest].kind >= slotTempUnknown
|
||||
|
||||
17
tests/vm/twrongarray.nim
Normal file
17
tests/vm/twrongarray.nim
Normal 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
|
||||
@@ -4,6 +4,6 @@ discard """
|
||||
"""
|
||||
|
||||
var x: array[100, char]
|
||||
template Foo : expr = x[42]
|
||||
template foo : expr = x[42]
|
||||
|
||||
const myConst = foo
|
||||
|
||||
Reference in New Issue
Block a user