[ https://issues.apache.org/jira/browse/GROOVY-9575?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Daniel Sun resolved GROOVY-9575. -------------------------------- Fix Version/s: 3.0.5 4.0.0-alpha-1 Assignee: Daniel Sun Resolution: Fixed The proposed PR has been merged. Thanks! > ASTNode.hashCode violates Object.hashCode contract: 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 > Assignee: Daniel Sun > Priority: Major > Fix For: 4.0.0-alpha-1, 3.0.5 > > Time Spent: 1h > Remaining Estimate: 0h > > 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 Object.hashCode javadoc: > * 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)