Kyle Moore created GROOVY-10707:
-----------------------------------
Summary: Regression in property access for conflicting isXxx and
getXxx accessors
Key: GROOVY-10707
URL: https://issues.apache.org/jira/browse/GROOVY-10707
Project: Groovy
Issue Type: Bug
Affects Versions: 4.0.3
Reporter: Kyle Moore
In upgrading our codebase from Groovy 3.0.11 to 4.0.3, we noticed a regression
in method selection when using property access. This toy example illustrates
the issue:
{code:java}
class Base {
boolean isFirstChild() { return true }
}
class Sub extends Base {
String getFirstChild() { return "hello" }
}
class SubSub extends Sub { }
assert new SubSub().firstChild instanceof String
{code}
This code passes in Groovy 3 but fails in Groovy 4. We observed this real-world
behavior with {{xerces:xercesImpl:2.12.1}} where an instance of class
{{org.apache.xerces.dom.ParentNode}} has both methods {{getFirstChild()}}
returning a {{Node}} and {{isFirstChild()}} returning a {{boolean}}.
As a workaround, we can access {{getFirstChild()}} by name instead of using
property access, but in discussions with [~paulk] this behavior change may be
unintended.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)