[
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)