Fix loop tuple unpacking in templates (#11174)

* Fix loop tuple unpacking in templates

* Add test
This commit is contained in:
nc-x
2019-05-05 15:52:41 +05:30
committed by Andreas Rumpf
parent 094d71cb6f
commit e42c304e4a
2 changed files with 14 additions and 1 deletions

View File

@@ -372,7 +372,11 @@ proc semTemplBody(c: var TemplCtx, n: PNode): PNode =
openScope(c)
n.sons[L-2] = semTemplBody(c, n.sons[L-2])
for i in countup(0, L - 3):
addLocalDecl(c, n.sons[i], skForVar)
if n[i].kind == nkVarTuple:
for j in 0 ..< sonsLen(n[i])-1:
addLocalDecl(c, n[i][j], skForVar)
else:
addLocalDecl(c, n.sons[i], skForVar)
openScope(c)
n.sons[L-1] = semTemplBody(c, n.sons[L-1])
closeScope(c)

View File

@@ -9,6 +9,7 @@ output: '''
@[(88, 99, 11), (88, 99, 11)]
@[(7, 6, -28), (7, 6, -28)]
12
110100
'''
"""
@@ -41,3 +42,11 @@ proc test[n]() =
for (a,b) in @[(1,2)]:
echo a,b
test[string]()
iterator tuples: (int, (int, int)) = yield (1,(10, 100))
template t11164 =
for i, (a, b) in tuples():
echo i, a , b
t11164()