fixes #3066
This commit is contained in:
parent
f934c92132
commit
799e0f3274
2 changed files with 20 additions and 0 deletions
|
|
@ -1184,6 +1184,9 @@ proc checkCanEval(c: PCtx; n: PNode) =
|
||||||
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)
|
||||||
|
elif s.kind in {skProc, skConverter, skMethod,
|
||||||
|
skIterator, skClosureIterator} and sfForward in s.flags:
|
||||||
|
cannotEval(n)
|
||||||
|
|
||||||
proc isTemp(c: PCtx; dest: TDest): bool =
|
proc isTemp(c: PCtx; dest: TDest): bool =
|
||||||
result = dest >= 0 and c.prc.slots[dest].kind >= slotTempUnknown
|
result = dest >= 0 and c.prc.slots[dest].kind >= slotTempUnknown
|
||||||
|
|
|
||||||
17
tests/vm/tforwardproc.nim
Normal file
17
tests/vm/tforwardproc.nim
Normal file
|
|
@ -0,0 +1,17 @@
|
||||||
|
discard """
|
||||||
|
errormsg: "cannot evaluate at compile time: initArray"
|
||||||
|
line: 11
|
||||||
|
"""
|
||||||
|
|
||||||
|
# bug #3066
|
||||||
|
|
||||||
|
proc initArray(): array[10, int]
|
||||||
|
|
||||||
|
const
|
||||||
|
someTable = initArray()
|
||||||
|
|
||||||
|
proc initArray(): array[10, int] =
|
||||||
|
for f in 0..<10:
|
||||||
|
result[f] = 3
|
||||||
|
|
||||||
|
when isMainModule: echo repr(someTable)
|
||||||
Loading…
Add table
Add a link
Reference in a new issue