summary refs log tree commit diff stats
path: root/tests/macros/tmacro7.nim
diff options
context:
space:
mode:
Diffstat (limited to 'tests/macros/tmacro7.nim')
-rw-r--r--tests/macros/tmacro7.nim36
1 files changed, 36 insertions, 0 deletions
diff --git a/tests/macros/tmacro7.nim b/tests/macros/tmacro7.nim
new file mode 100644
index 000000000..602191506
--- /dev/null
+++ b/tests/macros/tmacro7.nim
@@ -0,0 +1,36 @@
+discard """
+output: '''
+calling!stuff
+calling!stuff
+'''
+disabled: true
+"""
+
+# this test modifies an already semchecked ast (bad things happen)
+# this test relies on the bug #4547
+# issue #7792
+
+import macros
+
+proc callProc(str: string) =
+  echo "calling!" & str
+
+macro testMacro(code: typed): untyped =
+  let stmtList = newNimNode(nnkStmtList)
+
+  let stmts = code[6]
+
+  for n in stmts.children:
+    # the error happens here
+    stmtList.add(newCall(bindSym("callProc"), newLit("stuff")))
+
+  code[6] = stmtList
+
+  result = newEmptyNode()
+
+proc main() {.testMacro.} =
+  echo "test"
+  echo "test2"
+
+when isMainModule:
+  main()