diff --git a/java/java-impl/src/com/intellij/ide/hierarchy/method/MethodHierarchyNodeDescriptor.java b/java/java-impl/src/com/intellij/ide/hierarchy/method/MethodHierarchyNodeDescriptor.java index 61e530339ffa..dbdcff0f798b 100644 --- a/java/java-impl/src/com/intellij/ide/hierarchy/method/MethodHierarchyNodeDescriptor.java +++ b/java/java-impl/src/com/intellij/ide/hierarchy/method/MethodHierarchyNodeDescriptor.java @@ -52,7 +52,7 @@ public final class MethodHierarchyNodeDescriptor extends HierarchyNodeDescriptor myTreeStructure = treeStructure; } - private PsiMethod getMethod(final PsiClass aClass, final boolean checkBases) { + PsiMethod getMethod(final PsiClass aClass, final boolean checkBases) { return MethodHierarchyUtil.findBaseMethodInClass(myTreeStructure.getBaseMethod(), aClass, checkBases); } 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 7a5e86953689..922fc2d85644 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,13 +172,16 @@ public final class MethodHierarchyTreeStructure extends HierarchyTreeStructure { descriptors.add(d); } - FunctionalExpressionSearch.search(getBaseMethod()).forEach(new Processor() { - @Override - public boolean process(PsiFunctionalExpression expression) { - descriptors.add(new MethodHierarchyNodeDescriptor(myProject, descriptor, expression, false, MethodHierarchyTreeStructure.this)); - return true; - } - }); + final PsiMethod existingMethod = ((MethodHierarchyNodeDescriptor)descriptor).getMethod(psiClass, false); + if (existingMethod != null) { + FunctionalExpressionSearch.search(existingMethod).forEach(new Processor() { + @Override + public boolean process(PsiFunctionalExpression expression) { + descriptors.add(new MethodHierarchyNodeDescriptor(myProject, descriptor, expression, false, MethodHierarchyTreeStructure.this)); + return true; + } + }); + } return descriptors.toArray(new HierarchyNodeDescriptor[descriptors.size()]); } diff --git a/java/java-psi-api/src/com/intellij/psi/PsiFunctionalExpression.java b/java/java-psi-api/src/com/intellij/psi/PsiFunctionalExpression.java index e03806582884..2afbe46754d1 100644 --- a/java/java-psi-api/src/com/intellij/psi/PsiFunctionalExpression.java +++ b/java/java-psi-api/src/com/intellij/psi/PsiFunctionalExpression.java @@ -18,7 +18,7 @@ package com.intellij.psi; import com.intellij.openapi.util.Iconable; import org.jetbrains.annotations.Nullable; -public interface PsiFunctionalExpression extends PsiExpression, Iconable { +public interface PsiFunctionalExpression extends PsiExpression, Iconable, NavigatablePsiElement { /** * @return SAM type the lambda expression corresponds to * null when no SAM type could be found