Björn Kautler created GROOVY-11776:
--------------------------------------
Summary: Overload resolution of trait methods does not work
properly
Key: GROOVY-11776
URL: https://issues.apache.org/jira/browse/GROOVY-11776
Project: Groovy
Issue Type: Bug
Affects Versions: 5.0.1, 3.0.25, 4.0.26, 2.5.23
Reporter: Björn Kautler
Given this snippet:
{code:groovy}
trait Foo {
def foo(Object o) {
println("foo(o)")
}
def foo(Map<String, Object> m) {
println("foo(m)")
}
}
class Bar implements Foo {
def bar(Object o) {
println("bar(o)")
}
def bar(Map<String, Object> m) {
println("bar(m)")
}
}
new Bar().with {
foo((Object) null)
foo(null as Object)
bar((Object) null)
bar(null as Object)
}
(new Object() as Foo).with {
foo((Object) null)
foo(null as Object)
}
{code}
In Groovy 2.5, 3.0 and 4.0 {{bar}} uses the {{Object}} variant as expected, but
{{foo}} uses the {{Map}} variant for some reason.
In Groovy 5.0.alpha that is still on groovyconsole.dev this was fixed and both
used the {{Object}} variant as expected.
In 5.0.1 this is also broken again, behaving like before.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)