Thank you Paul,
mg

On 27.05.2018 02:56, Paul King wrote:
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 <mailto: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
    <mailto:glafo...@gmail.com>>
    Datum: 26.05.18 21:15 (GMT+01:00)
    An: dev@groovy.apache.org <mailto: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
    <http://docs.groovy-lang.org/next/html/documentation/#_macros>

    On Sat, May 26, 2018 at 7:04 PM mg <mg...@arscreat.com
    <mailto: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
        <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
        <mailto:cedric.champ...@gmail.com>>
        Datum: 26.05.18 18:12 (GMT+01:00)
        An: dev@groovy.apache.org <mailto: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
        <mailto: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
            
<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





-- Guillaume Laforge
    Apache Groovy committer & PMC Vice-President
    Developer Advocate @ Google Cloud Platform

    Blog: http://glaforge.appspot.com/ <http://glaforge.appspot.com/>
    Twitter: @glaforge <http://twitter.com/glaforge>



Reply via email to