From 8b2f8f5430e8c328efe5bce94e397f15e3c501af Mon Sep 17 00:00:00 2001 From: Araq Date: Fri, 22 Nov 2019 21:41:35 +0100 Subject: ARC: another critical bugfix; temporary tuples we introduce for tuple unpackaging are not owning the data --- compiler/lowerings.nim | 1 + tests/destructor/tmisc_destructors.nim | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/compiler/lowerings.nim b/compiler/lowerings.nim index 0922ab088..96afc4828 100644 --- a/compiler/lowerings.nim +++ b/compiler/lowerings.nim @@ -60,6 +60,7 @@ proc lowerTupleUnpacking*(g: ModuleGraph; n: PNode; owner: PSym): PNode = var temp = newSym(skTemp, getIdent(g.cache, genPrefix), owner, value.info, g.config.options) temp.typ = skipTypes(value.typ, abstractInst) incl(temp.flags, sfFromGeneric) + incl(temp.flags, sfCursor) var v = newNodeI(nkVarSection, value.info) let tempAsNode = newSymNode(temp) diff --git a/tests/destructor/tmisc_destructors.nim b/tests/destructor/tmisc_destructors.nim index 354938392..fdcea074b 100644 --- a/tests/destructor/tmisc_destructors.nim +++ b/tests/destructor/tmisc_destructors.nim @@ -28,7 +28,7 @@ proc test(): auto = var (a, b, _) = test() doAssert assign_counter == 0 -doAssert sink_counter == 12 # + 3 because of the conservative tuple unpacking transformation +doAssert sink_counter == 9 # XXX this is still silly and needs to be investigated # bug #11510 proc main = -- cgit 1.4.1-2-gfad0