From e484d54fb83541853b334d25384855ad21db998d Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Thu, 12 Nov 2015 12:29:08 +0100 Subject: [PATCH] missed usages of method references (IDEA-147828) --- .../impl/search/JavaFunctionalExpressionSearcher.java | 3 ++- .../lambda/findUsages/ClassFromJdkMethodRef.java | 10 ++++++++++ .../daemon/lambda/FindFunctionalInterfaceTest.java | 10 +++++++++- 3 files changed, 21 insertions(+), 2 deletions(-) create mode 100644 java/java-tests/testData/codeInsight/daemonCodeAnalyzer/lambda/findUsages/ClassFromJdkMethodRef.java 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