override hierarchy: convert some more code to Kotlin, sort out nullability
#KT-7531 Fixed
This commit is contained in:
@@ -43,15 +43,6 @@ public class HierarchyUtils {
|
||||
}
|
||||
};
|
||||
|
||||
public static final Function1<PsiElement, Boolean> IS_OVERRIDE_HIERARCHY_ELEMENT = new Function1<PsiElement, Boolean>() {
|
||||
@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);
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -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
|
||||
|
||||
+15
-5
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user