Thodoris Sotiropoulos created GROOVY-11094:
----------------------------------------------
Summary: 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
Somewhat related to GROOVY-GROOVY-11002.
I have the following program
{code}
import java.util.*;
import java.util.function.*;
class Bar {
LinkedList<String> collect(Supplier<String> function) {
return null;
}
List<String> collect(String x, int y, int d) { return null; }
}
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)