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

Eric Milles closed GROOVY-11094.
--------------------------------
    Resolution: Information Provided

> SAM types not working well along with overloading
> -------------------------------------------------
>
>                 Key: GROOVY-11094
>                 URL: https://issues.apache.org/jira/browse/GROOVY-11094
>             Project: Groovy
>          Issue Type: Bug
>          Components: Static Type Checker
>            Reporter: Thodoris Sotiropoulos
>            Assignee: Eric Milles
>            Priority: Minor
>              Labels: SAM, overloading
>
> I have the following program:
> {code}
> import java.util.*;
> import java.util.function.*;
> class Bar {
>   LinkedList<String> collect(Supplier<String> function) { }
>         List<String> collect(String x, int y, int z) { }
> }
> class Main {
>   static final void test() {
>     Bar x = null;
>     LinkedList<String> d = x.collect(() -> "fda");
>   }
> }
> {code}
> h3. Actual behaviour
> {code}
> org.codehaus.groovy.control.MultipleCompilationErrorsException: startup 
> failed:
> test.groovy: 14: [Static type checking] - Cannot assign value of type 
> java.util.List<java.lang.String> to variable of type 
> java.util.LinkedList<java.lang.String>
>  @ line 14, column 28.
>        LinkedList<String> d = x.collect(() -> "fda");
>                               ^
> 1 error
> {code}
> h3. Expected behaviour
> Compile successfully
> h3. Notes
> Tested against master (commit: cac91791764b8f0b3338318248474412f89e3456)
> Adapted from:
> {code}
> import java.util.*;
> import java.util.function.*;
> import org.eclipse.collections.api.tuple.primitive.BooleanBooleanPair;
> import org.eclipse.collections.api.map.primitive.*;
> import org.eclipse.collections.api.factory.map.primitive.*;
> import org.eclipse.collections.api.collection.*;
> import 
> org.eclipse.collections.api.factory.map.primitive.MutableDoubleFloatMapFactory;
> class Main {
>   static final <G, W>void test() {
>     ImmutableObjectDoubleMap<LongFunction<BooleanBooleanPair>> d = null;
>     final ImmutableCollection<MutableDoubleFloatMapFactory> x = d.collect((p) 
> -> (MutableDoubleFloatMapFactory) null );
>   }
> }
> {code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to