Paul King created GROOVY-7892: --------------------------------- Summary: 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.4.8
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)