mirror of
https://github.com/nim-lang/Nim.git
synced 2026-01-07 21:43:33 +00:00
Fix loop tuple unpacking in templates (#11174)
* Fix loop tuple unpacking in templates * Add test
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user