I figured out why:

By default macros are using CompilePhase.CONVERSION and at this point the
compiler doesn't care about types. That's why it didn't recognized neither
"JsonOutput" (When using JsonOutput.toJson...) nor "groovy" (When using
groovy.json.JsonOutput.toJson...):

The way it's working now is:

Statement stmt = macro(CompilePhase.SEMANTIC_ANALYSIS, true) {
    groovy.json.JsonOutput($v{mapExpression})
}

or...

MethodCallExpression methodCall = macro(CompilePhase.SEMANTIC_ANALYSIS) {
    groovy.json.JsonOutput($v{mapExpression})
}

...in case you wanted to get the method call expression directly.
Mario

2016-04-11 14:26 GMT+02:00 Mario Garcia <mario.g...@gmail.com>:

> Hello:
>
> I'm playing a little bit with groovy-macro, BTW it's really cool how easy
> you can create statements and expressions.
>
> However I'm having some issues when trying to create an static method call:
>
> *    Statement callJsonOutput(final MapExpression mapExpression) {*
> *        return macro(true) { JsonOutput.toJson($v{ mapExpression }) }*
> *    }*
>
> When executing the test, it complains because "JsonOutput" class is not
> found. That's correct, but I can't make it work either by doing:
>
> *    Statement callJsonOutput(final MapExpression mapExpression) {*
> *        return macro(true) { groovy.json.JsonOutput.toJson($v{
> mapExpression }) }*
> *    }*
>
> Any ideas ?
> Mario
>

Reply via email to