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

Reply via email to