I'll try to add in some basic information. I didn't realise that wasn't covered at all.
On Sun, May 27, 2018 at 9:55 AM, mg <mg...@arscreat.com> wrote: > Hi Guillaume, > > yes, there seems to be nothing on @Macro. > > Cheers, > mg > > -------- Ursprüngliche Nachricht -------- > Von: Guillaume Laforge <glafo...@gmail.com> > Datum: 26.05.18 21:15 (GMT+01:00) > An: dev@groovy.apache.org > Betreff: Re: Groovy 2.5 @Macro ? > > Did you also check the documentation? > http://docs.groovy-lang.org/next/html/documentation/#_macros > > On Sat, May 26, 2018 at 7:04 PM mg <mg...@arscreat.com> wrote: > >> Hi Cedric, >> >> thank you for replying. I did try having the @Macro annotated in a >> (static) method in a seperate class first, then moved it closer to the >> test. I posted that for brevity, and since I was banking on the author of >> the feature to set me straight... >> >> The release notes (http://groovy-lang.org/releasenotes/groovy-2.5.html) >> currently have the following to say on the topic: >> Macro support >> >> With Groovy 2.5, you can write macros in Groovy! >> Expressions and statements >> >> TBD >> Macro classes >> >> TBD >> AST matching >> >> TBD >> >> -------- Ursprüngliche Nachricht -------- >> Von: Cédric Champeau <cedric.champ...@gmail.com> >> Datum: 26.05.18 18:12 (GMT+01:00) >> An: dev@groovy.apache.org >> Betreff: Re: Groovy 2.5 @Macro ? >> >> I didn't check, but I _think_ you can't define a macro and use it in the >> same file. >> >> Le sam. 26 mai 2018 à 17:15, MG <mg...@arscreat.com> a écrit : >> >>> 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.Expressionimport >>> org.codehaus.groovy.ast.expr.VariableExpressionimport >>> org.codehaus.groovy.macro.runtime.Macroimport >>> org.codehaus.groovy.macro.runtime.MacroContextimport org.junit.Ignoreimport >>> org.junit.Testimport 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 >>> >>> >>> >>> > > -- > Guillaume Laforge > Apache Groovy committer & PMC Vice-President > Developer Advocate @ Google Cloud Platform > > Blog: http://glaforge.appspot.com/ > Twitter: @glaforge <http://twitter.com/glaforge> >