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

Jason Winnebeck commented on GROOVY-7836:
-----------------------------------------

Sorry, I look silly for just making that comment it's in the generated equals 
method so of course it's calling compareEqual. But it still seems odd with 
compile static that the first call is "dynamic"

> CompileStatic + static inner class + EqualsAndHashCode gives VerifyError in 
> equals
> ----------------------------------------------------------------------------------
>
>                 Key: GROOVY-7836
>                 URL: https://issues.apache.org/jira/browse/GROOVY-7836
>             Project: Groovy
>          Issue Type: Bug
>          Components: Static compilation
>    Affects Versions: 2.4.6
>            Reporter: Jason Winnebeck
>
> {code}
> import groovy.transform.CompileStatic
> import groovy.transform.EqualsAndHashCode
> @CompileStatic
> class Parent {
>     List<Integer> getInts() { [0] }
>     @EqualsAndHashCode
>     static class Child {
>         List<Integer> ints
>     }
> }
> println GroovySystem.version
> println new Parent.Child()
> {code}
> The key is the inner class having a property matching the parent's.
> Result:
> {code}
> 2.4.6
> java.lang.VerifyError: (class: Parent$Child, method: equals signature: 
> (Ljava/lang/Object;)Z) Incompatible object argument for function call
> {code}
> Inspecting the bytecode, I see the following:
> {code}
>    L13
>     ALOAD 0
>     INVOKEVIRTUAL Parent.getInts ()Ljava/util/List;
>     ALOAD 2
>     INVOKEVIRTUAL Parent$Child.getInts ()Ljava/util/List;
>     INVOKESTATIC 
> org/codehaus/groovy/runtime/ScriptBytecodeAdapter.compareEqual 
> (Ljava/lang/Object;Ljava/lang/Object;)Z
>     IFNE L14
>     ICONST_1
> {code}
> It appears that the bytecode is attempting to call a method on the outer 
> class, even though the inner class is static and there is no reason to access 
> the outer class.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to