diff options
author | ringabout <43030857+ringabout@users.noreply.github.com> | 2024-08-22 13:21:13 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-08-22 07:21:13 +0200 |
commit | 79f5a74408fab60c21e3905b72fe7dcdcb34eb52 (patch) | |
tree | 85ce29e8812c4ce20ac342f7865df2e8aa7c114b /compiler | |
parent | 04da0a6028a4a0d469a10567a35655646f4957c2 (diff) | |
download | Nim-79f5a74408fab60c21e3905b72fe7dcdcb34eb52.tar.gz |
fixes #23454; IndexDefect thrown when destructuring a lent tuple (#23993)
fixes #23454
Diffstat (limited to 'compiler')
-rw-r--r-- | compiler/transf.nim | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/compiler/transf.nim b/compiler/transf.nim index 7ab4ccae2..4061a407c 100644 --- a/compiler/transf.nim +++ b/compiler/transf.nim @@ -496,7 +496,10 @@ proc transformAddrDeref(c: PTransf, n: PNode, kinds: TNodeKinds): PNode = elif n.typ.skipTypes(abstractInst).kind in {tyVar}: result.typ = toVar(result.typ, n.typ.skipTypes(abstractInst).kind, c.idgen) else: - if n[0].kind in kinds: + if n[0].kind in kinds and + not (n[0][0].kind == nkSym and n[0][0].sym.kind == skForVar and + n[0][0].typ.skipTypes(abstractVar).kind == tyTuple + ): # elimination is harmful to `for tuple unpack` because of newTupleAccess # addr ( deref ( x )) --> x result = n[0][0] if n.typ.skipTypes(abstractVar).kind != tyOpenArray: |