summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorAraq <rumpf_a@web.de>2019-11-22 21:41:35 +0100
committerAraq <rumpf_a@web.de>2019-11-22 21:41:45 +0100
commit8b2f8f5430e8c328efe5bce94e397f15e3c501af (patch)
treeee320b582358901f8d504b6476bb1cdc05aa53a3
parent2acf74d458accf65d969199a389c8dbc2eedab55 (diff)
downloadNim-8b2f8f5430e8c328efe5bce94e397f15e3c501af.tar.gz
ARC: another critical bugfix; temporary tuples we introduce for tuple unpackaging are not owning the data
-rw-r--r--compiler/lowerings.nim1
-rw-r--r--tests/destructor/tmisc_destructors.nim2
2 files changed, 2 insertions, 1 deletions
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 =