This commit is contained in:
Araq 2019-08-12 14:06:48 +02:00
commit 322ce1872f
2 changed files with 22 additions and 1 deletions

View file

@ -796,7 +796,11 @@ proc p(n: PNode; c: var Con): PNode =
result = n
of nkAsgn, nkFastAsgn:
if hasDestructor(n[0].typ) and n[1].kind notin {nkProcDef, nkDo, nkLambda}:
result = moveOrCopy(n[0], n[1], c)
# rule (self-assignment-removal):
if n[1].kind == nkSym and n[0].kind == nkSym and n[0].sym == n[1].sym:
result = newNodeI(nkEmpty, n.info)
else:
result = moveOrCopy(n[0], n[1], c)
else:
result = copyNode(n)
recurse(n, result)