diff --git a/idea/src/org/jetbrains/kotlin/idea/hierarchy/HierarchyUtils.java b/idea/src/org/jetbrains/kotlin/idea/hierarchy/HierarchyUtils.java index 701d1960a97..1c159bb6500 100644 --- a/idea/src/org/jetbrains/kotlin/idea/hierarchy/HierarchyUtils.java +++ b/idea/src/org/jetbrains/kotlin/idea/hierarchy/HierarchyUtils.java @@ -38,7 +38,8 @@ public class HierarchyUtils { input instanceof JetFile || input instanceof JetNamedFunction || input instanceof JetSecondaryConstructor || - input instanceof JetClassOrObject || + input instanceof JetObjectDeclaration || + (input instanceof JetClass && !((JetClass) input).isInterface()) || input instanceof JetProperty; } }; diff --git a/idea/src/org/jetbrains/kotlin/idea/hierarchy/calls/KotlinCallHierarchyProvider.java b/idea/src/org/jetbrains/kotlin/idea/hierarchy/calls/KotlinCallHierarchyProvider.java index 1884f9f639f..a29816d3545 100644 --- a/idea/src/org/jetbrains/kotlin/idea/hierarchy/calls/KotlinCallHierarchyProvider.java +++ b/idea/src/org/jetbrains/kotlin/idea/hierarchy/calls/KotlinCallHierarchyProvider.java @@ -30,6 +30,7 @@ import com.intellij.psi.PsiFile; import org.jetbrains.annotations.NotNull; import org.jetbrains.kotlin.idea.hierarchy.HierarchyUtils; import org.jetbrains.kotlin.idea.util.ProjectRootsUtil; +import org.jetbrains.kotlin.psi.JetFile; public class KotlinCallHierarchyProvider implements HierarchyProvider { @Override @@ -40,7 +41,10 @@ public class KotlinCallHierarchyProvider implements HierarchyProvider { PsiElement element = getCurrentElement(dataContext, project); if (element == null) return null; - return HierarchyUtils.getCallHierarchyElement(element); + element = HierarchyUtils.getCallHierarchyElement(element); + if (element instanceof JetFile) return null; + + return element; } private static PsiElement getCurrentElement(DataContext dataContext, Project project) { diff --git a/idea/testData/hierarchy/calls/callees/kotlinInterface/main0.kt b/idea/testData/hierarchy/calls/callees/kotlinInterface/main0.kt new file mode 100644 index 00000000000..578d284280c --- /dev/null +++ b/idea/testData/hierarchy/calls/callees/kotlinInterface/main0.kt @@ -0,0 +1,5 @@ +interface T + +class A : T { + val t: T? = null +} \ No newline at end of file diff --git a/idea/testData/hierarchy/calls/callees/kotlinInterface/messages.txt b/idea/testData/hierarchy/calls/callees/kotlinInterface/messages.txt new file mode 100644 index 00000000000..ac59d48ed55 --- /dev/null +++ b/idea/testData/hierarchy/calls/callees/kotlinInterface/messages.txt @@ -0,0 +1 @@ +Cannot apply action for element at caret \ No newline at end of file diff --git a/idea/testData/hierarchy/calls/callers/kotlinInterface/main0.kt b/idea/testData/hierarchy/calls/callers/kotlinInterface/main0.kt new file mode 100644 index 00000000000..578d284280c --- /dev/null +++ b/idea/testData/hierarchy/calls/callers/kotlinInterface/main0.kt @@ -0,0 +1,5 @@ +interface T + +class A : T { + val t: T? = null +} \ No newline at end of file diff --git a/idea/testData/hierarchy/calls/callers/kotlinInterface/messages.txt b/idea/testData/hierarchy/calls/callers/kotlinInterface/messages.txt new file mode 100644 index 00000000000..ac59d48ed55 --- /dev/null +++ b/idea/testData/hierarchy/calls/callers/kotlinInterface/messages.txt @@ -0,0 +1 @@ +Cannot apply action for element at caret \ No newline at end of file diff --git a/idea/tests/org/jetbrains/kotlin/idea/hierarchy/HierarchyTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/hierarchy/HierarchyTestGenerated.java index 9822367de34..cb5260fdf08 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/hierarchy/HierarchyTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/hierarchy/HierarchyTestGenerated.java @@ -316,6 +316,12 @@ public class HierarchyTestGenerated extends AbstractHierarchyTest { doCallerHierarchyTest(fileName); } + @TestMetadata("kotlinInterface") + public void testKotlinInterface() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/testData/hierarchy/calls/callers/kotlinInterface/"); + doCallerHierarchyTest(fileName); + } + @TestMetadata("kotlinLocalClass") public void testKotlinLocalClass() throws Exception { String fileName = JetTestUtils.navigationMetadata("idea/testData/hierarchy/calls/callers/kotlinLocalClass/"); @@ -457,6 +463,12 @@ public class HierarchyTestGenerated extends AbstractHierarchyTest { doCalleeHierarchyTest(fileName); } + @TestMetadata("kotlinInterface") + public void testKotlinInterface() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/testData/hierarchy/calls/callees/kotlinInterface/"); + doCalleeHierarchyTest(fileName); + } + @TestMetadata("kotlinLocalClass") public void testKotlinLocalClass() throws Exception { String fileName = JetTestUtils.navigationMetadata("idea/testData/hierarchy/calls/callees/kotlinLocalClass/");