[
https://issues.apache.org/jira/browse/GROOVY-7836?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
John Wagenleitner resolved GROOVY-7836.
---------------------------------------
Resolution: Fixed
Fix Version/s: 2.4.7
I checked and this was fixed in commit
https://github.com/apache/groovy/commit/e4ea67c38e695fc78b4c60411322d72da2467bd0
as part of GROOVY-7813 and I verified the test code runs in 2.4.7. It looked
like the tests in that commit cover this issue, so am resolving this.
Thanks for reporting the issue.
> 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
> Fix For: 2.4.7
>
>
> {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)