Thanks Krux02,
Feels like I am getting close:
import macros
proc clean(a, b: int) : int =
result = 2 * a + b
macro hasNoSideEffects(p : typed) : bool =
var procDef = getImpl(p.symbol)
addPragma(procDef, newIdentNode("noSideEffect")) # commenting this line
has no effect, compiles() will return false anyway
result = newCall(newIdentNode("compiles"), procDef)
echo treeRepr(result)
echo hasNoSideEffects(clean)
The following code returns false all the time, I can't make compiles() to work
on proc definitions