mirror of
https://github.com/nim-lang/Nim.git
synced 2025-12-28 17:04:41 +00:00
* fix #12740 * A different kind of a hack * proper fix * fix typo
This commit is contained in:
@@ -451,7 +451,11 @@ proc lsub(g: TSrcGen; n: PNode): int =
|
||||
result = lcomma(g, n, 0, - 3)
|
||||
if n[^2].kind != nkEmpty: result = result + lsub(g, n[^2]) + 2
|
||||
if n[^1].kind != nkEmpty: result = result + lsub(g, n[^1]) + 3
|
||||
of nkVarTuple: result = lcomma(g, n, 0, - 3) + len("() = ") + lsub(g, lastSon(n))
|
||||
of nkVarTuple:
|
||||
if n[^1].kind == nkEmpty:
|
||||
result = lcomma(g, n, 0, - 2) + len("()")
|
||||
else:
|
||||
result = lcomma(g, n, 0, - 3) + len("() = ") + lsub(g, lastSon(n))
|
||||
of nkChckRangeF: result = len("chckRangeF") + 2 + lcomma(g, n)
|
||||
of nkChckRange64: result = len("chckRange64") + 2 + lcomma(g, n)
|
||||
of nkChckRange: result = len("chckRange") + 2 + lcomma(g, n)
|
||||
@@ -1119,12 +1123,17 @@ proc gsub(g: var TSrcGen, n: PNode, c: TContext) =
|
||||
putWithSpace(g, tkEquals, "=")
|
||||
gsub(g, n[^1], c)
|
||||
of nkVarTuple:
|
||||
put(g, tkParLe, "(")
|
||||
gcomma(g, n, 0, -3)
|
||||
put(g, tkParRi, ")")
|
||||
put(g, tkSpaces, Space)
|
||||
putWithSpace(g, tkEquals, "=")
|
||||
gsub(g, lastSon(n), c)
|
||||
if n[^1].kind == nkEmpty:
|
||||
put(g, tkParLe, "(")
|
||||
gcomma(g, n, 0, -2)
|
||||
put(g, tkParRi, ")")
|
||||
else:
|
||||
put(g, tkParLe, "(")
|
||||
gcomma(g, n, 0, -3)
|
||||
put(g, tkParRi, ")")
|
||||
put(g, tkSpaces, Space)
|
||||
putWithSpace(g, tkEquals, "=")
|
||||
gsub(g, lastSon(n), c)
|
||||
of nkExprColonExpr:
|
||||
gsub(g, n, 0)
|
||||
putWithSpace(g, tkColon, ":")
|
||||
|
||||
43
tests/macros/tastrepr.nim
Normal file
43
tests/macros/tastrepr.nim
Normal file
@@ -0,0 +1,43 @@
|
||||
discard """
|
||||
output: '''
|
||||
var data = @[(1, "one"), (2, "two")]
|
||||
for (i, d) in pairs(data):
|
||||
discard
|
||||
for i, d in pairs(data):
|
||||
discard
|
||||
for i, (x, y) in pairs(data):
|
||||
discard
|
||||
var (a, b) = (1, 2)
|
||||
|
||||
var data = @[(1, "one"), (2, "two")]
|
||||
for (i, d) in pairs(data):
|
||||
discard
|
||||
for i, d in pairs(data):
|
||||
discard
|
||||
for i, (x, y) in pairs(data):
|
||||
discard
|
||||
var (a, b) = (1, 2)
|
||||
'''
|
||||
"""
|
||||
|
||||
import macros
|
||||
|
||||
macro echoTypedRepr(arg: typed) =
|
||||
result = newCall(ident"echo", newLit(arg.repr))
|
||||
|
||||
macro echoUntypedRepr(arg: untyped) =
|
||||
result = newCall(ident"echo", newLit(arg.repr))
|
||||
|
||||
template echoTypedAndUntypedRepr(arg: untyped) =
|
||||
echoTypedRepr(arg)
|
||||
echoUntypedRepr(arg)
|
||||
|
||||
echoTypedAndUntypedRepr:
|
||||
var data = @[(1,"one"), (2,"two")]
|
||||
for (i, d) in pairs(data):
|
||||
discard
|
||||
for i, d in pairs(data):
|
||||
discard
|
||||
for i, (x,y) in pairs(data):
|
||||
discard
|
||||
var (a,b) = (1,2)
|
||||
Reference in New Issue
Block a user