diff --git a/java/java-impl/src/com/intellij/ide/hierarchy/method/MethodHierarchyTreeStructure.java b/java/java-impl/src/com/intellij/ide/hierarchy/method/MethodHierarchyTreeStructure.java index 747bd2a039b1..7a5e86953689 100644 --- a/java/java-impl/src/com/intellij/ide/hierarchy/method/MethodHierarchyTreeStructure.java +++ b/java/java-impl/src/com/intellij/ide/hierarchy/method/MethodHierarchyTreeStructure.java @@ -172,7 +172,7 @@ public final class MethodHierarchyTreeStructure extends HierarchyTreeStructure { descriptors.add(d); } - FunctionalExpressionSearch.search(psiClass).forEach(new Processor() { + FunctionalExpressionSearch.search(getBaseMethod()).forEach(new Processor() { @Override public boolean process(PsiFunctionalExpression expression) { descriptors.add(new MethodHierarchyNodeDescriptor(myProject, descriptor, expression, false, MethodHierarchyTreeStructure.this)); diff --git a/java/java-impl/src/com/intellij/refactoring/changeSignature/JavaChangeSignatureUsageSearcher.java b/java/java-impl/src/com/intellij/refactoring/changeSignature/JavaChangeSignatureUsageSearcher.java index 9e08b3541485..b56779ff9957 100644 --- a/java/java-impl/src/com/intellij/refactoring/changeSignature/JavaChangeSignatureUsageSearcher.java +++ b/java/java-impl/src/com/intellij/refactoring/changeSignature/JavaChangeSignatureUsageSearcher.java @@ -77,11 +77,8 @@ class JavaChangeSignatureUsageSearcher { methods.add(method); for (PsiMethod psiMethod : methods) { - final PsiClass containingClass = psiMethod.getContainingClass(); - if (psiMethod == LambdaUtil.getFunctionalInterfaceMethod(containingClass)) { - for (PsiFunctionalExpression functionalExpression : FunctionalExpressionSearch.search(containingClass)) { - result.add(new FunctionalInterfaceChangedUsageInfo(functionalExpression, psiMethod)); - } + for (PsiFunctionalExpression functionalExpression : FunctionalExpressionSearch.search(psiMethod)) { + result.add(new FunctionalInterfaceChangedUsageInfo(functionalExpression, psiMethod)); } } diff --git a/java/java-impl/src/com/intellij/refactoring/safeDelete/JavaSafeDeleteProcessor.java b/java/java-impl/src/com/intellij/refactoring/safeDelete/JavaSafeDeleteProcessor.java index 0cc98b49400d..807700bc52ae 100644 --- a/java/java-impl/src/com/intellij/refactoring/safeDelete/JavaSafeDeleteProcessor.java +++ b/java/java-impl/src/com/intellij/refactoring/safeDelete/JavaSafeDeleteProcessor.java @@ -485,15 +485,13 @@ public class JavaSafeDeleteProcessor extends SafeDeleteProcessorDelegateBase { private static void findFunctionalExpressions(final List usages, PsiMethod... methods) { for (PsiMethod method : methods) { final PsiClass containingClass = method.getContainingClass(); - if (LambdaUtil.getFunctionalInterfaceMethod(containingClass) == method) { - FunctionalExpressionSearch.search(containingClass).forEach(new Processor() { - @Override - public boolean process(PsiFunctionalExpression expression) { - usages.add(new SafeDeleteFunctionalExpressionUsageInfo(expression, containingClass)); - return true; - } - }); - } + FunctionalExpressionSearch.search(method).forEach(new Processor() { + @Override + public boolean process(PsiFunctionalExpression expression) { + usages.add(new SafeDeleteFunctionalExpressionUsageInfo(expression, containingClass)); + return true; + } + }); } } diff --git a/java/java-indexing-api/src/com/intellij/psi/search/searches/FunctionalExpressionSearch.java b/java/java-indexing-api/src/com/intellij/psi/search/searches/FunctionalExpressionSearch.java index 10a07c568c24..8ad915c5ed95 100644 --- a/java/java-indexing-api/src/com/intellij/psi/search/searches/FunctionalExpressionSearch.java +++ b/java/java-indexing-api/src/com/intellij/psi/search/searches/FunctionalExpressionSearch.java @@ -18,9 +18,12 @@ package com.intellij.psi.search.searches; import com.intellij.openapi.extensions.ExtensionPointName; import com.intellij.psi.PsiClass; import com.intellij.psi.PsiFunctionalExpression; +import com.intellij.psi.PsiMethod; +import com.intellij.psi.PsiModifier; import com.intellij.psi.search.GlobalSearchScope; import com.intellij.psi.search.PsiSearchHelper; import com.intellij.psi.search.SearchScope; +import com.intellij.util.EmptyQuery; import com.intellij.util.Query; import com.intellij.util.QueryExecutor; import org.jetbrains.annotations.NotNull; @@ -53,6 +56,18 @@ public class FunctionalExpressionSearch extends ExtensibleQueryFactory search(final PsiMethod psiMethod) { + return search(psiMethod, GlobalSearchScope.allScope(psiMethod.getProject())); + } + + public static Query search(final PsiMethod psiMethod, SearchScope scope) { + if (!psiMethod.hasModifierProperty(PsiModifier.STATIC) && !psiMethod.hasModifierProperty(PsiModifier.DEFAULT)) { + return INSTANCE.createUniqueResultsQuery(new SearchParameters(psiMethod.getContainingClass(), scope)); + } + + return EmptyQuery.getEmptyQuery(); + } + public static Query search(final PsiClass aClass) { return search(aClass, GlobalSearchScope.allScope(aClass.getProject())); }