summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorAraq <rumpf_a@web.de>2014-09-11 10:02:45 +0200
committerAraq <rumpf_a@web.de>2014-09-11 10:02:45 +0200
commitc73142d8527308850c0d20f1d3a116b5629e93d2 (patch)
tree381dd72cb7fcbb4a5d8759bc71749c72c16e621b
parentff55c487b6b550229b6ca3064c0d432134ca3fff (diff)
downloadNim-c73142d8527308850c0d20f1d3a116b5629e93d2.tar.gz
fixes #1067
-rw-r--r--compiler/ccgstmts.nim10
1 files changed, 10 insertions, 0 deletions
diff --git a/compiler/ccgstmts.nim b/compiler/ccgstmts.nim
index eca026e12..3004e353b 100644
--- a/compiler/ccgstmts.nim
+++ b/compiler/ccgstmts.nim
@@ -37,6 +37,16 @@ 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