diff --git a/idea/src/org/jetbrains/kotlin/idea/hierarchy/HierarchyUtils.java b/idea/src/org/jetbrains/kotlin/idea/hierarchy/HierarchyUtils.java index ed8de18334e..5a28793fb28 100644 --- a/idea/src/org/jetbrains/kotlin/idea/hierarchy/HierarchyUtils.java +++ b/idea/src/org/jetbrains/kotlin/idea/hierarchy/HierarchyUtils.java @@ -43,15 +43,6 @@ public class HierarchyUtils { } }; - public static final Function1 IS_OVERRIDE_HIERARCHY_ELEMENT = new Function1() { - @Override - public Boolean invoke(@Nullable PsiElement input) { - return input instanceof PsiMethod || - input instanceof JetNamedFunction || - input instanceof JetProperty; - } - }; - public static PsiElement getCurrentElement(DataContext dataContext, Project project) { Editor editor = CommonDataKeys.EDITOR.getData(dataContext); if (editor != null) { @@ -71,8 +62,4 @@ public class HierarchyUtils { return PsiUtilPackage.getParentOfTypesAndPredicate(element, false, ArrayUtil.EMPTY_CLASS_ARRAY, IS_CALL_HIERARCHY_ELEMENT); } - public static PsiElement getOverrideHierarchyElement(PsiElement element) { - //noinspection unchecked - return PsiUtilPackage.getParentOfTypesAndPredicate(element, false, ArrayUtil.EMPTY_CLASS_ARRAY, IS_OVERRIDE_HIERARCHY_ELEMENT); - } } diff --git a/idea/src/org/jetbrains/kotlin/idea/hierarchy/overrides/KotlinOverrideHierarchyBrowser.kt b/idea/src/org/jetbrains/kotlin/idea/hierarchy/overrides/KotlinOverrideHierarchyBrowser.kt index ee1fc9551c1..4f5c0192c63 100644 --- a/idea/src/org/jetbrains/kotlin/idea/hierarchy/overrides/KotlinOverrideHierarchyBrowser.kt +++ b/idea/src/org/jetbrains/kotlin/idea/hierarchy/overrides/KotlinOverrideHierarchyBrowser.kt @@ -43,7 +43,7 @@ class KotlinOverrideHierarchyBrowser( ) override fun isApplicableElement(psiElement: PsiElement): Boolean = - HierarchyUtils.IS_OVERRIDE_HIERARCHY_ELEMENT(psiElement) + isOverrideHierarchyElement(psiElement) override fun createHierarchyTreeStructure(typeName: String, psiElement: PsiElement): HierarchyTreeStructure? = if (typeName == MethodHierarchyBrowserBase.METHOD_TYPE) KotlinOverrideTreeStructure(myProject, psiElement) else null diff --git a/idea/src/org/jetbrains/kotlin/idea/hierarchy/overrides/KotlinOverrideHierarchyProvider.kt b/idea/src/org/jetbrains/kotlin/idea/hierarchy/overrides/KotlinOverrideHierarchyProvider.kt index 53a6e3cad69..c3c63fad01c 100644 --- a/idea/src/org/jetbrains/kotlin/idea/hierarchy/overrides/KotlinOverrideHierarchyProvider.kt +++ b/idea/src/org/jetbrains/kotlin/idea/hierarchy/overrides/KotlinOverrideHierarchyProvider.kt @@ -16,19 +16,23 @@ package org.jetbrains.kotlin.idea.hierarchy.overrides +import com.intellij.ide.hierarchy.HierarchyBrowser +import com.intellij.ide.hierarchy.HierarchyBrowserBaseEx import com.intellij.ide.hierarchy.HierarchyProvider +import com.intellij.ide.hierarchy.MethodHierarchyBrowserBase +import com.intellij.openapi.actionSystem.CommonDataKeys import com.intellij.openapi.actionSystem.DataContext import com.intellij.psi.PsiElement -import com.intellij.ide.hierarchy.HierarchyBrowser -import com.intellij.openapi.actionSystem.CommonDataKeys +import com.intellij.psi.PsiMethod import org.jetbrains.kotlin.idea.hierarchy.HierarchyUtils -import com.intellij.ide.hierarchy.MethodHierarchyBrowserBase -import com.intellij.ide.hierarchy.HierarchyBrowserBaseEx +import org.jetbrains.kotlin.psi.JetNamedFunction +import org.jetbrains.kotlin.psi.JetProperty +import org.jetbrains.kotlin.psi.psiUtil.getParentOfTypesAndPredicate public class KotlinOverrideHierarchyProvider: HierarchyProvider { override fun getTarget(dataContext: DataContext): PsiElement? { return CommonDataKeys.PROJECT.getData(dataContext)?.let { project -> - HierarchyUtils.getOverrideHierarchyElement(HierarchyUtils.getCurrentElement(dataContext, project)) + getOverrideHierarchyElement(HierarchyUtils.getCurrentElement(dataContext, project)) } } @@ -38,4 +42,10 @@ public class KotlinOverrideHierarchyProvider: HierarchyProvider { override fun browserActivated(hierarchyBrowser: HierarchyBrowser) { (hierarchyBrowser as HierarchyBrowserBaseEx).changeView(MethodHierarchyBrowserBase.METHOD_TYPE) } + + private fun getOverrideHierarchyElement(element: PsiElement?): PsiElement? + = element?.getParentOfTypesAndPredicate() { isOverrideHierarchyElement(it) } } + +fun isOverrideHierarchyElement(element: PsiElement): Boolean + = element is PsiMethod || element is JetNamedFunction || element is JetProperty