From f1f6fcf53b610eb127b6e70f32646ec7bc0b208c Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Thu, 17 Apr 2014 15:30:07 +0200 Subject: [PATCH] functional interfaces: ignore methods with type parameters during abstract method choosing --- .../src/com/intellij/psi/LambdaUtil.java | 3 ++- .../GenericNotGenericInterfaceMethod.java | 16 ++++++++++++++++ .../daemon/lambda/LambdaHighlightingTest.java | 1 + 3 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 java/java-tests/testData/codeInsight/daemonCodeAnalyzer/lambda/highlighting/GenericNotGenericInterfaceMethod.java diff --git a/java/java-psi-api/src/com/intellij/psi/LambdaUtil.java b/java/java-psi-api/src/com/intellij/psi/LambdaUtil.java index 9206cd8d0802..09b9cdd48e64 100644 --- a/java/java-psi-api/src/com/intellij/psi/LambdaUtil.java +++ b/java/java-psi-api/src/com/intellij/psi/LambdaUtil.java @@ -181,7 +181,8 @@ public class LambdaUtil { boolean subsignature = true; for (MethodSignature methodSignature : signatures) { if (!signature.equals(methodSignature)) { - if (!MethodSignatureUtil.isSubsignature(signature, methodSignature)) { + if (!MethodSignatureUtil.isSubsignature(signature, methodSignature) && + methodSignature.getTypeParameters().length == 0) { subsignature = false; break; } diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/lambda/highlighting/GenericNotGenericInterfaceMethod.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/lambda/highlighting/GenericNotGenericInterfaceMethod.java new file mode 100644 index 000000000000..9cb75abb0c80 --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/lambda/highlighting/GenericNotGenericInterfaceMethod.java @@ -0,0 +1,16 @@ +class Test { + + interface A { + void m(); + } + + interface B { + void m(); + } + + interface C extends A, B { } + + { + C c = ()-> {}; + } +} diff --git a/java/java-tests/testSrc/com/intellij/codeInsight/daemon/lambda/LambdaHighlightingTest.java b/java/java-tests/testSrc/com/intellij/codeInsight/daemon/lambda/LambdaHighlightingTest.java index 7cccc155f5fd..63684fa9c848 100644 --- a/java/java-tests/testSrc/com/intellij/codeInsight/daemon/lambda/LambdaHighlightingTest.java +++ b/java/java-tests/testSrc/com/intellij/codeInsight/daemon/lambda/LambdaHighlightingTest.java @@ -103,6 +103,7 @@ public class LambdaHighlightingTest extends LightDaemonAnalyzerTestCase { public void testIDEA123308() {doTest();} public void testIntersection() {doTest();} public void testNoBoxingInLambdaFormalParams() {doTest();} + public void testGenericNotGenericInterfaceMethod() {doTest();} private void doTest() { doTest(false);