new overload resolution: check only functional arguments in isFunctionalTypeMoreSpecific (IDEA-134328)

This commit is contained in:
Anna Kozlova
2014-12-17 15:50:18 +01:00
parent 673a65262c
commit a026cc2dd1
3 changed files with 27 additions and 1 deletions

View File

@@ -1201,7 +1201,7 @@ public class InferenceSession {
continue;
}
if (LambdaUtil.isFunctionalType(sType) && LambdaUtil.isFunctionalType(tType) && !relates(sType, tType)) {
if (!isFunctionalTypeMoreSpecific(sType, tType, session, args)) {
if (!isFunctionalTypeMoreSpecific(sType, tType, session, args[i])) {
return false;
}
} else {

View File

@@ -0,0 +1,22 @@
import java.util.List;
import java.util.function.Function;
class Test {
{
transform(1, (String l) -> null);
}
public static <I, O> void transform(int input, Function<I, O> function) {
System.out.println(input);
System.out.println(function);
}
interface IFunction<F, T> {
List<T> apply(F var1);
}
public static <I, O> void transform(int input, IFunction<I, O> function) {
System.out.println(input);
System.out.println(function);
}
}

View File

@@ -51,6 +51,10 @@ public class OverloadResolutionTest extends LightDaemonAnalyzerTestCase {
doTest();
}
public void testIgnoreNonFunctionalArgumentsWhenCheckIfFunctionalMoreSpecific() throws Exception {
doTest();
}
private void doTest() {
doTest(true);
}