summary refs log tree commit diff stats
path: root/tests/macros/tdumpast.nim
diff options
context:
space:
mode:
Diffstat (limited to 'tests/macros/tdumpast.nim')
-rw-r--r--tests/macros/tdumpast.nim33
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
+