This commit is contained in:
Andreas Rumpf 2020-03-09 15:32:38 +01:00 • committed by GitHub
commit 63af8ae53c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 125 additions and 0 deletions

View file

@ -128,6 +128,19 @@ proc transformSymAux(c: PTransf, n: PNode): PNode =
b = s.getBody
if b.kind != nkSym: internalError(c.graph.config, n.info, "wrong AST for borrowed symbol")
b = newSymNode(b.sym, n.info)
elif c.inlining > 0:
# see bug #13596: we use ref-based equality in the DFA for destruction
# injections so we need to ensure unique nodes after iterator inlining
# which can lead to duplicated for loop bodies! Consider:
#[
while remaining > 0:
if ending == nil:
yield ms
break
...
yield ms
]#
b = newSymNode(n.sym, n.info)
else:
b = n
while tc != nil: