diff --git a/java/java-psi-impl/src/com/intellij/psi/impl/source/resolve/graphInference/FunctionalInterfaceParameterizationUtil.java b/java/java-psi-impl/src/com/intellij/psi/impl/source/resolve/graphInference/FunctionalInterfaceParameterizationUtil.java index 1add88c340d7..0c71f2ad4309 100644 --- a/java/java-psi-impl/src/com/intellij/psi/impl/source/resolve/graphInference/FunctionalInterfaceParameterizationUtil.java +++ b/java/java-psi-impl/src/com/intellij/psi/impl/source/resolve/graphInference/FunctionalInterfaceParameterizationUtil.java @@ -185,7 +185,7 @@ public class FunctionalInterfaceParameterizationUtil { newParameters[i] = bound != null ? bound : PsiType.getJavaLangObject(psiClass.getManager(), psiClassType.getResolveScope()); for (PsiClassType paramBound : typeParameters[i].getExtendsListTypes()) { if (!PsiPolyExpressionUtil.mentionsTypeParameters(paramBound, typeParametersSet)) { - newParameters[i] = GenericsUtil.getGreatestLowerBound(paramBound, newParameters[i]); + newParameters[i] = GenericsUtil.getGreatestLowerBound(newParameters[i], paramBound); } } } diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/lambda/newLambda/IntersectionTypeOfDifferentParameterizationOfTheSameClassInNonWildcardParameterization.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/lambda/newLambda/IntersectionTypeOfDifferentParameterizationOfTheSameClassInNonWildcardParameterization.java new file mode 100644 index 000000000000..5c1d56de45b5 --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/lambda/newLambda/IntersectionTypeOfDifferentParameterizationOfTheSameClassInNonWildcardParameterization.java @@ -0,0 +1,13 @@ +interface A { + void method(B> arg); +} + +interface B> { + void method(); +} + +class Test { + public static void test(A a) { + a.method(() -> {}); + } +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/codeInsight/daemon/lambda/NewLambdaHighlightingTest.java b/java/java-tests/testSrc/com/intellij/codeInsight/daemon/lambda/NewLambdaHighlightingTest.java index c63e23015938..0223980bb7da 100644 --- a/java/java-tests/testSrc/com/intellij/codeInsight/daemon/lambda/NewLambdaHighlightingTest.java +++ b/java/java-tests/testSrc/com/intellij/codeInsight/daemon/lambda/NewLambdaHighlightingTest.java @@ -207,6 +207,11 @@ public class NewLambdaHighlightingTest extends LightDaemonAnalyzerTestCase { doTest(); } + //JDK-8043374 + public void testIntersectionTypeOfDifferentParameterizationOfTheSameClassInNonWildcardParameterization() throws Exception { + doTest(); + } + private void doTest() { doTest(false); }