[
https://issues.apache.org/jira/browse/GROOVY-11776?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18028794#comment-18028794
]
Björn Kautler commented on GROOVY-11776:
----------------------------------------
Feel free to close this for now unless I somehow happen to be able to reproduce
again and can verify I'm really-really on Groovy 5, as on <= 4 the resolution
is still wrong.
I anyway used a mixin now instead of a trait due to that, it is for runtime
decoration only anyway.
> 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: 2.5.23, 4.0.26, 3.0.25, 5.0.1
> Reporter: Björn Kautler
> Priority: Major
>
> 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)