Anders Wallgren created GROOVY-9575:
---------------------------------------

             Summary: ASTNode.hashCode violates Object.hashCodecontract: does 
not return consistent value
                 Key: GROOVY-9575
                 URL: https://issues.apache.org/jira/browse/GROOVY-9575
             Project: Groovy
          Issue Type: Bug
    Affects Versions: 3.0.4
            Reporter: Anders Wallgren


While upgrading groovy from 2.4.18 to 3.0.4 in a project we ran into a problem: 
ASTNode.hashCode uses mutable properties of the object to calculate the hash.

Those object properties are not, however, used when equals() is invoked on an 
ASTNode instance (as of 3.0.4 ASTNode does not implement equals).

This means ASTNode violates an important part of the Object.hashCode contract 
and you cannot safely put ASTNode instances into collections where the hashcode 
is relied upon to be consistent.

Quoting the contract Object.hashCode:
 * Whenever it is invoked on the same object more than once during an execution 
of a Java application, the {{hashCode}} method must consistently return the 
same integer, provided no information used in {{equals}} comparisons on the 
object is modified. This integer need not remain consistent from one execution 
of an application to another execution of the same application.

 



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to