diff --git a/java/java-indexing-impl/src/com/intellij/psi/impl/java/FunExprOccurrence.java b/java/java-indexing-impl/src/com/intellij/psi/impl/java/FunExprOccurrence.java index 545c2d1f5cfd..8ce591241f5d 100644 --- a/java/java-indexing-impl/src/com/intellij/psi/impl/java/FunExprOccurrence.java +++ b/java/java-indexing-impl/src/com/intellij/psi/impl/java/FunExprOccurrence.java @@ -156,7 +156,7 @@ public class FunExprOccurrence { String paramClassName = paramType instanceof PsiClassType ? ((PsiClassType)paramType).getClassName() : null; if (paramClassName == null) return false; - if (paramClassName.equals(sam.getName()) && sam.equals(((PsiClassType)paramType).resolve())) { + if (paramClassName.equals(sam.getName()) && sam.getManager().areElementsEquivalent(sam, ((PsiClassType)paramType).resolve())) { return true; } diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/lambda/findUsages/FindLambdaForAllEquivalentSams.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/lambda/findUsages/FindLambdaForAllEquivalentSams.java new file mode 100644 index 000000000000..f41cfe50e7ed --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/lambda/findUsages/FindLambdaForAllEquivalentSams.java @@ -0,0 +1,7 @@ +class C { + void m(Foo f) {} + + { + m(() -> {}); + } +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/java/codeInsight/daemon/lambda/FindFunctionalInterfaceTest.java b/java/java-tests/testSrc/com/intellij/java/codeInsight/daemon/lambda/FindFunctionalInterfaceTest.java index 15ce5a70a8b0..b08d9a367797 100644 --- a/java/java-tests/testSrc/com/intellij/java/codeInsight/daemon/lambda/FindFunctionalInterfaceTest.java +++ b/java/java-tests/testSrc/com/intellij/java/codeInsight/daemon/lambda/FindFunctionalInterfaceTest.java @@ -224,6 +224,17 @@ public class FindFunctionalInterfaceTest extends LightCodeInsightFixtureTestCase assertSize(5, FunctionalExpressionSearch.search(findClassAtCaret()).findAll()); } + public void testFindLambdaForAllEquivalentSams() { + configure(); + + PsiFile file = myFixture.addFileToProject("a.java", + "interface Foo { void foo(); }" + + "interface Foo { void bar(); } "); + PsiClass[] fooClasses = ((PsiJavaFile)file).getClasses(); + assertOneElement(FunctionalExpressionSearch.search(fooClasses[0]).findAll()); + assertOneElement(FunctionalExpressionSearch.search(fooClasses[1]).findAll()); + } + @Override protected String getBasePath() { return JavaTestUtil.getRelativeJavaTestDataPath() + "/codeInsight/daemonCodeAnalyzer/lambda/findUsages/";