new inference: wildcard parametrization for lambda with formal params: assignability check for complete parametrization only

This commit is contained in:
Anna Kozlova
2014-02-28 20:07:07 +01:00
parent cfcc34be5f
commit e683dc8fc1
3 changed files with 15 additions and 5 deletions
@@ -118,14 +118,10 @@ public class FunctionalInterfaceParameterizationUtil {
return null;
}
if (!TypeConversionUtil.containsWildcards(parameterization)) {
if (!TypeConversionUtil.containsWildcards(parameterization) && psiClassType.isAssignableFrom(parameterization)) {
return parameterization;
}
if (!psiClassType.isAssignableFrom(parameterization)) {
return null;
}
return getNonWildcardParameterization((PsiClassType)psiClassType);
}
return null;
@@ -0,0 +1,10 @@
import java.util.function.Function;
class Test {
<U, V> void foo(Function<U, ? extends V> m) {}
{
foo((String e) -> e.length());
}
}
@@ -28,6 +28,10 @@ public class FunctionalTypeWildcardParameterizationTest extends LightDaemonAnaly
doTest();
}
public void testLambdaFormalParamTypesParametrization() throws Exception {
doTest();
}
private void doTest() {
IdeaTestUtil.setTestVersion(JavaSdkVersion.JDK_1_8, getModule(), getTestRootDisposable());
doTestNewInference(BASE_PATH + "/" + getTestName(false) + ".java", false, false);