mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
new inference: wildcard parametrization for lambda with formal params: assignability check for complete parametrization only
This commit is contained in:
+1
-5
@@ -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;
|
||||
|
||||
+10
@@ -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());
|
||||
}
|
||||
}
|
||||
+4
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user