summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorAraq <rumpf_a@web.de>2014-08-30 22:44:33 +0200
committerAraq <rumpf_a@web.de>2014-08-30 22:44:33 +0200
commitc9563d28a8ef3ef74826d4c211cac13301963dd5 (patch)
treee4b86f88eec8fdbcc043cb7880a9b5cb57cbdc57
parent0257f389fef6492906e47761f7e366921113bba6 (diff)
downloadNim-c9563d28a8ef3ef74826d4c211cac13301963dd5.tar.gz
fixes #1067
-rw-r--r--compiler/ccgstmts.nim9
1 files changed, 9 insertions, 0 deletions
diff --git a/compiler/ccgstmts.nim b/compiler/ccgstmts.nim
index 66bfbba8c..efa8b0adc 100644
--- a/compiler/ccgstmts.nim
+++ b/compiler/ccgstmts.nim
@@ -37,6 +37,15 @@ proc genVarTuple(p: BProc, n: PNode) =
   var tup, field: TLoc
   if n.kind != nkVarTuple: internalError(n.info, "genVarTuple")
   var L = sonsLen(n)
+
+  # if we have a something that's been captured, use the lowering instead:
+  var useLowering = false
+  for i in countup(0, L-3):
+    if n[i].kind != nkSym:
+      useLowering = true; break
+  if useLowering:
+    genStmts(p, lowerTupleUnpacking(n, p.prc))
+    return
   genLineDir(p, n)
   initLocExpr(p, n.sons[L-1], tup)
   var t = tup.t