[ 
https://issues.apache.org/jira/browse/GROOVY-9005?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16773217#comment-16773217
 ] 

Eric Milles commented on GROOVY-9005:
-------------------------------------

I suspected that an anonymous inner class was going to show up in your example. 
 I had a similar issue (GROOVY-8433) where an anonymous inner, which contains 
an implicit parameter "this" is transformed to something that fails to compile.

Could you try your example this way just to see if the alternative syntax using 
a closure literal works?
{code:groovy}
@CompileStatic
class A extends A1 {
    Map<String, Object> getInnerObject() {
        Map<String, Object> commands = getBaseMap()
        commands.put('name', { ->
          getObject().toString()  // otherwise the "this" that gets transformed 
is the implicit object expression of this line
        } as Callable<String>)

        return commands
    }
}
{code}

> SomeClass.groovy: -1: Access to java.lang.Object#this is forbidden @ line -1, 
> column -1
> ---------------------------------------------------------------------------------------
>
>                 Key: GROOVY-9005
>                 URL: https://issues.apache.org/jira/browse/GROOVY-9005
>             Project: Groovy
>          Issue Type: Bug
>          Components: Static compilation
>    Affects Versions: 2.5.6
>            Reporter: Devin Rosenbauer
>            Priority: Major
>         Attachments: GROOVY-9005.zip
>
>
> I'm receiving the above error when attempting to compile certain classes that 
> have @CompileStatic on either the class or a method within a dynamically 
> compiled class. The project is a cross-compiled Java / Groovy project with 
> all classes of both types defined in the "groovy" structure. The error can be 
> reproduced when a Groovy class extends a Java class which extends a Groovy 
> class, then a method in the Java class is called from an inner class of the 
> Groovy class.
> The simplest case I can derive to reproduce the failure is attached.
> A is the class which fails to compile. A1 and A2 are the Java and Groovy 
> superclasses, respectively.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to