diff --git a/java/java-psi-impl/src/com/intellij/psi/impl/source/resolve/graphInference/constraints/CheckedExceptionCompatibilityConstraint.java b/java/java-psi-impl/src/com/intellij/psi/impl/source/resolve/graphInference/constraints/CheckedExceptionCompatibilityConstraint.java index 87eb8b804b08..cf974c91f980 100644 --- a/java/java-psi-impl/src/com/intellij/psi/impl/source/resolve/graphInference/constraints/CheckedExceptionCompatibilityConstraint.java +++ b/java/java-psi-impl/src/com/intellij/psi/impl/source/resolve/graphInference/constraints/CheckedExceptionCompatibilityConstraint.java @@ -176,7 +176,7 @@ public class CheckedExceptionCompatibilityConstraint extends InputOutputConstrai private static boolean isAddressed(List expectedThrownTypes, PsiType thrownType) { for (PsiType expectedThrownType : expectedThrownTypes) { - if (TypeConversionUtil.isAssignable(expectedThrownType, thrownType)) { + if (TypeConversionUtil.isAssignable(TypeConversionUtil.erasure(thrownType), expectedThrownType)) { return true; } } diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/lambda/newLambda/CheckedExceptionsConstraintsSubstitutions1.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/lambda/newLambda/CheckedExceptionsConstraintsSubstitutions1.java new file mode 100644 index 000000000000..476d30ab3cf2 --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/lambda/newLambda/CheckedExceptionsConstraintsSubstitutions1.java @@ -0,0 +1,38 @@ +import java.io.IOException; + +class Test { + + interface B { + K l(K k) throws E; + } + + void bar(B b) {} + + T baz(T l) throws E { + return null; + } + + { + bar(l -> baz(l)); + bar(this::baz); + } +} +class Test1 { + + interface B { + K l(K k) throws E; + } + + void bar(B b) {} + + class MyEx extends Exception{} + + T baz(T l) throws E { + return null; + } + + { + bar(l -> baz(l)); + bar(this::baz); + } +} 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 ca5ce7e44e96..f0636eb92e57 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 @@ -142,6 +142,10 @@ public class NewLambdaHighlightingTest extends LightDaemonAnalyzerTestCase { doTest(); } + public void testCheckedExceptionsConstraintsSubstitutions1() throws Exception { + doTest(); + } + public void testCheckedExceptionsConstraintsSubstitutionsDeepInBody() throws Exception { doTest(); }