[ https://issues.apache.org/jira/browse/GROOVY-7892?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Paul King resolved GROOVY-7892. ------------------------------- Resolution: Fixed Fix Version/s: (was: 2.4.8) 2.5.0-beta-1 As part of fixing the cloned issue, we also changed the exception returned for the relevant code when comparing using compareTo. The now thrown IllegalArgumentException is more informative but is a breaking change if you were expecting the previous ClassCastException which is now the cause of the new exception. This was done for 2.5+ only. > CLONE - ClassCastException when calling DefaultTypeTransformation#compareEqual > ------------------------------------------------------------------------------ > > Key: GROOVY-7892 > URL: https://issues.apache.org/jira/browse/GROOVY-7892 > Project: Groovy > Issue Type: Bug > Affects Versions: 2.4.6 > Reporter: Andrew White > Assignee: Paul King > Fix For: 2.5.0-beta-1 > > > It appears that comparing two objects that both implement comparable with > DefaultTypeTransformation#compareEqual is not safe in all cases. Consider > enums for example, which throw exceptions when compared to differing classes. > This is using Eclipse Collections for pairs but the idea is the same in > general. > {code} > enum E1 {A, B, C} > enum E2 {D, E, F} > def "test groovy oddness"() { > when: > def test = DefaultTypeTransformation.compareEqual( > Tuples.pair(E1.A, 1), > Tuples.pair(E2.D, 1)) > then: > assert test == false > } > {code} > Stacktrace > {code} > java.lang.ClassCastException > at java.lang.Enum.compareTo(Enum.java:180) > at java.lang.Enum.compareTo(Enum.java:55) > at > org.eclipse.collections.impl.tuple.PairImpl.compareTo(PairImpl.java:95) > at > org.eclipse.collections.impl.tuple.PairImpl.compareTo(PairImpl.java:22) > at com.GroovyTests.test groovy oddness(GroovyTests.groovy:36) > {code} -- This message was sent by Atlassian JIRA (v6.3.4#6332)