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 supportWith Groovy 2.5, 
you can write macros in Groovy!Expressions and statementsTBDMacro classesTBDAST 
matchingTBD
-------- 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.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-PresidentDeveloper Advocate @ Google Cloud 
Platform

Blog: http://glaforge.appspot.com/Twitter: @glaforge

Reply via email to