[ 
https://issues.apache.org/jira/browse/GROOVY-7582?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Paul King closed GROOVY-7582.
-----------------------------

> Closure to SAM coercion doesn't handle overloads with different SAM signatures
> ------------------------------------------------------------------------------
>
>                 Key: GROOVY-7582
>                 URL: https://issues.apache.org/jira/browse/GROOVY-7582
>             Project: Groovy
>          Issue Type: Bug
>    Affects Versions: 2.4.4
>            Reporter: Luke Daley
>            Assignee: Eric Milles
>            Priority: Major
>             Fix For: 4.0.0-alpha-3
>
>
> The following…
> {code}
> interface Action<T> {
>   void exec(T thing)
> }
> interface Block {
>   void exec()
> }
> class Container {
>   void m(Action<?> action) {}
>   void m(Block block) {} 
> }
> def c = new Container()
> c.m { -> 1 }
> {code}
> Yields…
> {code}
> groovy.lang.GroovyRuntimeException: Ambiguous method overloading for method 
> Container#m.
> Cannot resolve which method to invoke for [class 
> ConsoleScript0$_run_closure1] due to overlapping prototypes between:
>       [interface Action]
>       [interface Block]
>       at ConsoleScript0.run(ConsoleScript0:16)
> {code}
> It seems that Groovy should be able to deal with the case where the SAM 
> parameter signatures are different. Java does this with lambda expressions. 
> That is, the following works in Java…
> {code}
> Container c = new Container();
> c.m(() -> {});
> c.m(arg -> {});
> {code}



--
This message was sent by Atlassian Jira
(v8.20.1#820001)

Reply via email to