« Return to Thread: Groovy AST not taking?

Re: Groovy AST not taking?

by Peter Niederwieser :: Rate this Message:

Reply to Author | View in Thread

What is it that seems off to you? The fact that only global transforms can run in phase conversion? There is a good reason for this: It's not possible to tell if @WithLog is annotated with @GroovyASTTransformationClass before its type has been resolved (which happens in phase semantic analysis).
In general, writing a global transform isn't harder than writing a local one. Your case is an exception because in phase conversion it's not completely trivial to correctly identify a @WithLog annotation (which you would get for free with a local transform). Before you go down this route, I suggest to verify my belief that phase semantic analysis, and therefore a local transform, isn't good enough for your case. The example that didn't seem to work with your original transform was:

@WithLog
class Foo {
  def foo() {
    assert log != null // OK
    assert Foo.log != null // compile error
  }
}

Cheers,
Peter

Robert Fischer wrote:
I haven't run your tests, so I'm not sure what the result is.  Since my error was a lack of "log"
property, it sounds like this conversion problem was the issue.

> No. The reason why I suggested a global transform is that the compiler seems
> to do some checks for static properties during semantic analysis. Therefore
> you might need to add 'log' before semantic analysis if you want to support
> all ways that it could be accessed (qualified, unqualified, from the same
> class, from other classes, etc.). But only global transforms can be run
> before semantic analysis (i.e. in phase CONVERSION).
>
Ah.  Sucky.  Is this something I should open a JIRA on?  Seems off to me.

~~ Robert Fischer, Smokejumper IT Consulting.
Enfranchised Mind Blog http://EnfranchisedMind.com/blog

Check out my book, "Grails Persistence with GORM and GSQL"!
http://www.smokejumperit.com/redirect.html

---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    http://xircles.codehaus.org/manage_email

 « Return to Thread: Groovy AST not taking?