groovy-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From MG <mg...@arscreat.com>
Subject Re: Groovy 2.5 @Macro ?
Date Sun, 27 May 2018 02:11:38 GMT
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 <mgbiz@arscreat.com 
> <mailto:mgbiz@arscreat.com>> wrote:
>
>     Hi Guillaume,
>
>     yes, there seems to be nothing on @Macro.
>
>     Cheers,
>     mg
>
>     -------- Ursprüngliche Nachricht --------
>     Von: Guillaume Laforge <glaforge@gmail.com
>     <mailto:glaforge@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 <mgbiz@arscreat.com
>     <mailto:mgbiz@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.champeau@gmail.com
>         <mailto:cedric.champeau@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 <mgbiz@arscreat.com
>         <mailto:mgbiz@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>
>
>


Mime
View raw message