Skip to content

Commit b0c06aa

Browse files
krux02cooldome
authored andcommitted
fix #12740 (#12774)
* fix #12740 * A different kind of a hack * proper fix * fix typo
1 parent 3383985 commit b0c06aa

File tree

2 files changed

+59
-7
lines changed

2 files changed

+59
-7
lines changed

compiler/renderer.nim

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -451,7 +451,11 @@ proc lsub(g: TSrcGen; n: PNode): int =
451451
result = lcomma(g, n, 0, - 3)
452452
if n[^2].kind != nkEmpty: result = result + lsub(g, n[^2]) + 2
453453
if n[^1].kind != nkEmpty: result = result + lsub(g, n[^1]) + 3
454-
of nkVarTuple: result = lcomma(g, n, 0, - 3) + len("() = ") + lsub(g, lastSon(n))
454+
of nkVarTuple:
455+
if n[^1].kind == nkEmpty:
456+
result = lcomma(g, n, 0, - 2) + len("()")
457+
else:
458+
result = lcomma(g, n, 0, - 3) + len("() = ") + lsub(g, lastSon(n))
455459
of nkChckRangeF: result = len("chckRangeF") + 2 + lcomma(g, n)
456460
of nkChckRange64: result = len("chckRange64") + 2 + lcomma(g, n)
457461
of nkChckRange: result = len("chckRange") + 2 + lcomma(g, n)
@@ -1119,12 +1123,17 @@ proc gsub(g: var TSrcGen, n: PNode, c: TContext) =
11191123
putWithSpace(g, tkEquals, "=")
11201124
gsub(g, n[^1], c)
11211125
of nkVarTuple:
1122-
put(g, tkParLe, "(")
1123-
gcomma(g, n, 0, -3)
1124-
put(g, tkParRi, ")")
1125-
put(g, tkSpaces, Space)
1126-
putWithSpace(g, tkEquals, "=")
1127-
gsub(g, lastSon(n), c)
1126+
if n[^1].kind == nkEmpty:
1127+
put(g, tkParLe, "(")
1128+
gcomma(g, n, 0, -2)
1129+
put(g, tkParRi, ")")
1130+
else:
1131+
put(g, tkParLe, "(")
1132+
gcomma(g, n, 0, -3)
1133+
put(g, tkParRi, ")")
1134+
put(g, tkSpaces, Space)
1135+
putWithSpace(g, tkEquals, "=")
1136+
gsub(g, lastSon(n), c)
11281137
of nkExprColonExpr:
11291138
gsub(g, n, 0)
11301139
putWithSpace(g, tkColon, ":")

tests/macros/tastrepr.nim

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
discard """
2+
output: '''
3+
var data = @[(1, "one"), (2, "two")]
4+
for (i, d) in pairs(data):
5+
discard
6+
for i, d in pairs(data):
7+
discard
8+
for i, (x, y) in pairs(data):
9+
discard
10+
var (a, b) = (1, 2)
11+
12+
var data = @[(1, "one"), (2, "two")]
13+
for (i, d) in pairs(data):
14+
discard
15+
for i, d in pairs(data):
16+
discard
17+
for i, (x, y) in pairs(data):
18+
discard
19+
var (a, b) = (1, 2)
20+
'''
21+
"""
22+
23+
import macros
24+
25+
macro echoTypedRepr(arg: typed) =
26+
result = newCall(ident"echo", newLit(arg.repr))
27+
28+
macro echoUntypedRepr(arg: untyped) =
29+
result = newCall(ident"echo", newLit(arg.repr))
30+
31+
template echoTypedAndUntypedRepr(arg: untyped) =
32+
echoTypedRepr(arg)
33+
echoUntypedRepr(arg)
34+
35+
echoTypedAndUntypedRepr:
36+
var data = @[(1,"one"), (2,"two")]
37+
for (i, d) in pairs(data):
38+
discard
39+
for i, d in pairs(data):
40+
discard
41+
for i, (x,y) in pairs(data):
42+
discard
43+
var (a,b) = (1,2)

0 commit comments

Comments
 (0)