How do I create emit macros that don't add a stacktrace?
import macros
macro emitWithoutStacktrace(): stmt =
result = newStmtList()
result.add quote do:
{.push stacktrace: off.}
result.add(newNimNode(nnkPragma).add(newNimNode(nnkExprColonExpr).add(newIdentNode("emit"), newStrLitNode("foobar"))))
result.add quote do:
{.pop stacktrace: off.}
proc main =
emitWithoutStacktrace()
main()
Produces
N_NIMCALL(void, main_104042)(void) {
nimfr("main", "test.nim")
nimln(7, "test.nim");
foobar
popFrame();
}
Where I would prefer
N_NIMCALL(void, main_104042)(void) {
foobar
popFrame();
}
Without any additional compiler arguments like --stacktrace: off
.