You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@groovy.apache.org by "Tobias Ahlers (JIRA)" <ji...@apache.org> on 2015/07/30 12:17:04 UTC

[jira] [Created] (GROOVY-7530) disjoint() does not work correctly if objects don't implement Comparable

Tobias Ahlers created GROOVY-7530:
-------------------------------------

             Summary: disjoint() does not work correctly if objects don't implement Comparable
                 Key: GROOVY-7530
                 URL: https://issues.apache.org/jira/browse/GROOVY-7530
             Project: Groovy
          Issue Type: Bug
          Components: groovy-runtime
    Affects Versions: 2.4.4
            Reporter: Tobias Ahlers


{code:java}
class Foo {

    private String name

    Foo(String name) {
        this.name = name
    }

    public boolean equals(Object o) {
        if (this == o) return true
        if (o == null || getClass() != o.getClass()) return false
        Foo that = (Foo) o
        return Objects.equals(name, that.name)
    }

    public int hashCode() {
        return Objects.hash(name)
    }

}

def a = [new Foo("foo")]
def b = [new Foo("foo")]    
assert !a.disjoint(b)
{code}

If disjoint() is used on a list with objects not implementing Comparable the wrong result is returned.
intersect() shows the same wrong behavior.

It's looks like the NumberAwareComparator not implementing the equals case as of commit 286532c is the problem.



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