diff --git a/java/java-psi-api/src/com/intellij/psi/LambdaHighlightingUtil.java b/java/java-psi-api/src/com/intellij/psi/LambdaHighlightingUtil.java index 1b22d9c4288f..8dc811e6258d 100644 --- a/java/java-psi-api/src/com/intellij/psi/LambdaHighlightingUtil.java +++ b/java/java-psi-api/src/com/intellij/psi/LambdaHighlightingUtil.java @@ -97,18 +97,17 @@ public class LambdaHighlightingUtil { @Nullable public static String checkInterfaceFunctional(PsiType functionalInterfaceType) { if (functionalInterfaceType instanceof PsiIntersectionType) { - if (!LambdaUtil.isFunctionalType(functionalInterfaceType)) { - int count = 0; - for (PsiType type : ((PsiIntersectionType)functionalInterfaceType).getConjuncts()) { - if (checkInterfaceFunctional(type) == null) { - count++; - } - } - - if (count > 1) { - return "Multiple non-overriding abstract methods found in " + functionalInterfaceType.getPresentableText(); + int count = 0; + for (PsiType type : ((PsiIntersectionType)functionalInterfaceType).getConjuncts()) { + if (checkInterfaceFunctional(type) == null) { + count++; } } + + if (count > 1) { + return "Multiple non-overriding abstract methods found in " + functionalInterfaceType.getPresentableText(); + } + return null; } final PsiClassType.ClassResolveResult resolveResult = PsiUtil.resolveGenericsClassInType(functionalInterfaceType); final PsiClass aClass = resolveResult.getElement(); diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/lambda/highlighting/Intersection.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/lambda/highlighting/Intersection.java index e470cf357b0b..767b54788948 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/lambda/highlighting/Intersection.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/lambda/highlighting/Intersection.java @@ -18,3 +18,18 @@ class Test { Object o5 = (Runnable & A) () -> {}; } } + +class Test1 { + + interface A { + void foo(); + } + + interface B { + void foo(); + } + + { + Object c0 = (A & B) ()->{}; + } +}