summary refs log tree commit diff stats
path: root/tests/macros/t8997.nim
blob: b0622371740df757132bac88b38350c6ec57ad37 (plain) (blame)
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)