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)

Reply via email to