mirror of
https://github.com/nim-lang/Nim.git
synced 2026-04-18 21:40:32 +00:00
fixes #1319
This commit is contained in:
@@ -546,7 +546,7 @@ proc flattenTree(root: PNode): PNode =
|
||||
flattenTreeAux(result, root, op)
|
||||
else:
|
||||
result = root
|
||||
|
||||
|
||||
proc transformCall(c: PTransf, n: PNode): PTransNode =
|
||||
var n = flattenTree(n)
|
||||
var op = getMergeOp(n)
|
||||
@@ -565,6 +565,9 @@ proc transformCall(c: PTransf, n: PNode): PTransNode =
|
||||
inc(j)
|
||||
add(result, a.PTransNode)
|
||||
if len(result) == 2: result = result[1]
|
||||
elif getMagic(n) == mNBindSym:
|
||||
# for bindSym(myconst) we MUST NOT perform constant folding:
|
||||
result = n.PTransNode
|
||||
else:
|
||||
let s = transformSons(c, n).PNode
|
||||
# bugfix: check after 'transformSons' if it's still a method call:
|
||||
|
||||
25
tests/macros/tbindsym.nim
Normal file
25
tests/macros/tbindsym.nim
Normal file
@@ -0,0 +1,25 @@
|
||||
discard """
|
||||
output: '''TFoo
|
||||
TBar'''
|
||||
"""
|
||||
|
||||
# bug #1319
|
||||
|
||||
import macros
|
||||
|
||||
type
|
||||
TTextKind = enum
|
||||
TFoo, TBar
|
||||
|
||||
macro test: stmt =
|
||||
var x = @[TFoo, TBar]
|
||||
result = newStmtList()
|
||||
for i in x:
|
||||
result.add newCall(newIdentNode("echo"),
|
||||
case i
|
||||
of TFoo:
|
||||
bindSym("TFoo")
|
||||
of TBar:
|
||||
bindSym("TBar"))
|
||||
|
||||
test()
|
||||
Reference in New Issue
Block a user