diff options
Diffstat (limited to 'tests/macros/tdumpast.nim')
-rw-r--r-- | tests/macros/tdumpast.nim | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/tests/macros/tdumpast.nim b/tests/macros/tdumpast.nim new file mode 100644 index 000000000..55a964327 --- /dev/null +++ b/tests/macros/tdumpast.nim @@ -0,0 +1,33 @@ +# Dump the contents of a PNimrodNode + +import macros + +template plus(a, b: expr): expr = + a + b + +macro call(e: expr): expr = + result = newCall("foo", newStrLitNode("bar")) + +macro dumpAST(n: stmt): stmt {.immediate.} = + # dump AST as a side-effect and return the inner node + let n = callsite() + echo n.lispRepr + echo n.treeRepr + + var plusAst = getAst(plus(1, 2)) + echo plusAst.lispRepr + + var callAst = getAst(call()) + echo callAst.lispRepr + + var e = parseExpr("foo(bar + baz)") + echo e.lispRepr + + result = n[1] + +dumpAST: + proc add(x, y: int): int = + return x + y + + proc sub(x, y: int): int = return x - y + |