Fixes #1642.
This commit is contained in:
parent
a4b2762249
commit
3ac2e00334
2 changed files with 12 additions and 2 deletions
|
|
@ -2095,7 +2095,11 @@ proc expr(p: BProc, n: PNode, d: var TLoc) =
|
|||
# due to a bug/limitation in the lambda lifting, unused inner procs
|
||||
# are not transformed correctly. We work around this issue (#411) here
|
||||
# by ensuring it's no inner proc (owner is a module):
|
||||
if prc.skipGenericOwner.kind == skModule:
|
||||
#
|
||||
# We also check whether the proc captures its environment here to
|
||||
# prevent issue #1642.
|
||||
if prc.skipGenericOwner.kind == skModule and
|
||||
tfCapturesEnv in prc.typ.flags:
|
||||
if (optDeadCodeElim notin gGlobalOptions and
|
||||
sfDeadCodeElim notin getModule(prc).flags) or
|
||||
({sfExportc, sfCompilerProc} * prc.flags == {sfExportc}) or
|
||||
|
|
|
|||
6
tests/closure/tissue1642.nim
Normal file
6
tests/closure/tissue1642.nim
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
discard """
|
||||
file: "tissue1642.nim"
|
||||
"""
|
||||
block:
|
||||
var i = 0
|
||||
proc p() = inc(i)
|
||||
Loading…
Add table
Add a link
Reference in a new issue