Skip to content

Commit da11146

Browse files
committed
progress
1 parent 40b4b6b commit da11146

File tree

1 file changed

+7
-4
lines changed

1 file changed

+7
-4
lines changed

compiler/injectdestructors.nim

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -879,13 +879,16 @@ proc p(n: PNode; c: var Con; s: var Scope; mode: ProcessMode; tmpFlags = {sfSing
879879

880880
result = copyTree(n)
881881
for i in ord(n.kind == nkClosure)..<n.len:
882+
# nkClosure env (i=1): must not consume; it's shared with lexical refs
883+
# (e.g. hash(inner) after `let inner2 = inner` needs the env).
884+
let mClosure = if n.kind == nkClosure and i == 1: normal else: m
882885
if n[i].kind == nkExprColonExpr:
883-
result[i][1] = p(n[i][1], c, s, m)
886+
result[i][1] = p(n[i][1], c, s, mClosure)
884887
elif n[i].kind == nkRange:
885-
result[i][0] = p(n[i][0], c, s, m)
886-
result[i][1] = p(n[i][1], c, s, m)
888+
result[i][0] = p(n[i][0], c, s, mClosure)
889+
result[i][1] = p(n[i][1], c, s, mClosure)
887890
else:
888-
result[i] = p(n[i], c, s, m)
891+
result[i] = p(n[i], c, s, mClosure)
889892
of nkObjConstr:
890893
# see also the remark about `nkTupleConstr`.
891894
let t = n.typ.skipTypes(abstractInst)

0 commit comments

Comments
 (0)