diff --git a/java/java-indexing-impl/src/com/intellij/psi/impl/search/JavaFunctionalExpressionSearcher.java b/java/java-indexing-impl/src/com/intellij/psi/impl/search/JavaFunctionalExpressionSearcher.java index 128b96f4b0af..f3cf54df5083 100644 --- a/java/java-indexing-impl/src/com/intellij/psi/impl/search/JavaFunctionalExpressionSearcher.java +++ b/java/java-indexing-impl/src/com/intellij/psi/impl/search/JavaFunctionalExpressionSearcher.java @@ -364,7 +364,8 @@ public class JavaFunctionalExpressionSearcher extends QueryExecutorBase holders) { for (JavaFunctionalExpressionIndex.IndexHolder holder : holders) { - if (holder.getLambdaParamsNumber() == myExpectedFunExprParamsCount) { + final int lambdaParamsNumber = holder.getLambdaParamsNumber(); + if (lambdaParamsNumber == myExpectedFunExprParamsCount || lambdaParamsNumber == -1) { final boolean suitableParamNumbers; if (myVarArgs) { suitableParamNumbers = holder.getMethodArgsLength() >= myParametersCount - 1; diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/lambda/findUsages/ClassFromJdkMethodRef.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/lambda/findUsages/ClassFromJdkMethodRef.java new file mode 100644 index 000000000000..40acbd56414a --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/lambda/findUsages/ClassFromJdkMethodRef.java @@ -0,0 +1,10 @@ +class Test{ + + public void main(java.util.List list) { + list.stream().filter(this::bar) + } + + public boolean bar() { + return true; + } +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/codeInsight/daemon/lambda/FindFunctionalInterfaceTest.java b/java/java-tests/testSrc/com/intellij/codeInsight/daemon/lambda/FindFunctionalInterfaceTest.java index 1018c0706831..fdccb3c34cdd 100644 --- a/java/java-tests/testSrc/com/intellij/codeInsight/daemon/lambda/FindFunctionalInterfaceTest.java +++ b/java/java-tests/testSrc/com/intellij/codeInsight/daemon/lambda/FindFunctionalInterfaceTest.java @@ -70,6 +70,14 @@ public class FindFunctionalInterfaceTest extends LightCodeInsightFixtureTestCase } public void testClassFromJdk() { + doTestIndexSearch("(e) -> true"); + } + + public void testClassFromJdkMethodRef() { + doTestIndexSearch("this::bar"); + } + + public void doTestIndexSearch(String expected) { myFixture.configureByFile(getTestName(false) + ".java"); for (int i = 0; i < JavaFunctionalExpressionSearcher.SMART_SEARCH_THRESHOLD + 5; i++) { @@ -79,7 +87,7 @@ public class FindFunctionalInterfaceTest extends LightCodeInsightFixtureTestCase PsiClass predicate = JavaPsiFacade.getInstance(getProject()).findClass(Predicate.class.getName(), GlobalSearchScope.allScope(getProject())); assert predicate != null; final PsiFunctionalExpression next = assertOneElement(FunctionalExpressionSearch.search(predicate).findAll()); - assertEquals("(e) -> true", next.getText()); + assertEquals(expected, next.getText()); } @Override