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)

Reply via email to