I would have expected a quick "you can't use it like that / you just
have to / here is some documentation" reply...
Then let me rephrase my question: Why are these Groovy 2.5 tests green:
https://github.com/apache/groovy/blob/GROOVY_2_5_X/subprojects/groovy-macro/src/test/groovy/org/codehaus/groovy/macro/MacroTransformationTest.groovy
?
Cheers,
mg
On 26.05.2018 00:00, MG wrote:
Hi guys,
giving the new Groovy 2.5 macro functionality a spin, and would have
expected the code below to replace the "call" to nv(x) with the AST
expression created in the method, i.e. returning the name of the
"passed" variable. Instead no macro magic happens, and the compilation
accordingly fails with "groovy.lang.MissingMethodException: No
signature of method: groovy.GroovyMacroSpike.nv() is applicable for
argument types: (Integer) values: [123]":
import org.codehaus.groovy.ast.expr.Expression
import org.codehaus.groovy.ast.expr.VariableExpression
import org.codehaus.groovy.macro.runtime.Macro import
org.codehaus.groovy.macro.runtime.MacroContext
import org.junit.Ignore import org.junit.Test import static
org.codehaus.groovy.ast.tools.GeneralUtils.constX
class GroovyMacroSpike {
@Test @Ignore void nvTest() {
final x =123 assert x ==123 assert nv(x) =="x" }
@Macro Expression nv(MacroContext ctx, VariableExpression variable) {
return constX(variable.getName());
}
}
What is missing to make this work ?
mg