1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
|
discard """
errormsg: "illformed AST: "
line: 24
"""
import macros
type
Node* = ref object
children: seq[Node]
proc newNode*(): Node =
Node(children: newSeq[Node]())
macro build*(body: untyped): untyped =
template appendElement(tmp, childrenBlock) {.dirty.} =
bind newNode
let tmp = newNode()
tmp.children = childrenBlock # this line seems to be the problem
let tmp = genSym(nskLet, "tmp")
let childrenBlock = newEmptyNode()
result = getAst(appendElement(tmp, childrenBlock))
build(body)
|