mirror of
https://github.com/nim-lang/Nim.git
synced 2025-12-31 18:32:11 +00:00
* reject to modify type checked AST * add flag to back out * Introduce legacy feature set.
37 lines
624 B
Nim
37 lines
624 B
Nim
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()
|