use Kotlin call hierarchy provider only for Kotlin elements, to ensure that it does not interfere with standard Java features of IntelliJ IDEA (cherry picked from commit 7004917)
diff --git a/idea/src/META-INF/plugin.xml b/idea/src/META-INF/plugin.xml index 82176a2..613eb59 100644 --- a/idea/src/META-INF/plugin.xml +++ b/idea/src/META-INF/plugin.xml
@@ -524,10 +524,6 @@ <callHierarchyProvider language="kotlin" implementationClass="org.jetbrains.kotlin.idea.hierarchy.calls.KotlinCallHierarchyProvider" /> - <callHierarchyProvider - language="JAVA" - implementationClass="org.jetbrains.kotlin.idea.hierarchy.calls.KotlinCallHierarchyProvider" - order="first" /> <methodHierarchyProvider language="kotlin" implementationClass="org.jetbrains.kotlin.idea.hierarchy.overrides.KotlinOverrideHierarchyProvider" />
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 06e79fc..0cf8870 100644 --- a/idea/src/org/jetbrains/kotlin/idea/hierarchy/calls/KotlinCallHierarchyProvider.java +++ b/idea/src/org/jetbrains/kotlin/idea/hierarchy/calls/KotlinCallHierarchyProvider.java
@@ -28,6 +28,7 @@ import com.intellij.psi.PsiElement; import com.intellij.psi.PsiFile; import org.jetbrains.annotations.NotNull; +import org.jetbrains.kotlin.idea.KotlinLanguage; import org.jetbrains.kotlin.idea.hierarchy.HierarchyUtils; import org.jetbrains.kotlin.idea.util.ProjectRootsUtil; import org.jetbrains.kotlin.psi.KtFile; @@ -42,7 +43,7 @@ if (element == null) return null; element = HierarchyUtils.getCallHierarchyElement(element); - if (element instanceof KtFile) return null; + if (element instanceof KtFile || element.getLanguage() != KotlinLanguage.INSTANCE) return null; return element; }
diff --git a/idea/testData/hierarchy/calls/callees/javaConstructor/JavaConstructor_verification.xml b/idea/testData/hierarchy/calls/callees/javaConstructor/JavaConstructor_verification.xml deleted file mode 100644 index ace35f1..0000000 --- a/idea/testData/hierarchy/calls/callees/javaConstructor/JavaConstructor_verification.xml +++ /dev/null
@@ -1,9 +0,0 @@ -<node text="KClient.KClient() ()" base="true"> - <node text="KA.KA()(2 usages) ()"/> - <node text="KA.foo(String) ()"/> - <node text="JA.JA()(2 usages) ()"/> - <node text="JA.getName() ()"/> - <node text="JA.foo(String) ()"> - <node text="PrintStream.println(String) (java.io)"/> - </node> -</node>
diff --git a/idea/testData/hierarchy/calls/callees/javaConstructor/main0.java b/idea/testData/hierarchy/calls/callees/javaConstructor/main0.java deleted file mode 100644 index ff6732a..0000000 --- a/idea/testData/hierarchy/calls/callees/javaConstructor/main0.java +++ /dev/null
@@ -1,31 +0,0 @@ -class KA { - KA() { - } - - public final String name = "A"; - public final String foo(String s) { - return "A " + s; - } -} - -class KClientBase { - -} - -class KClient extends KClientBase { - public <caret>KClient() { - super(); - new KA().foo(new KA().name); - new JA().foo(new JA().getName()); - } - - { - new KA().foo(new KA().name); - new JA().foo(new JA().getName()); - } - - public final void bar() { - new KA().foo(new KA().name); - new JA().foo(new JA().getName()); - } -} \ No newline at end of file
diff --git a/idea/testData/hierarchy/calls/callees/javaConstructor/main1.kt b/idea/testData/hierarchy/calls/callees/javaConstructor/main1.kt deleted file mode 100644 index 156782a..0000000 --- a/idea/testData/hierarchy/calls/callees/javaConstructor/main1.kt +++ /dev/null
@@ -1,8 +0,0 @@ -open class JA() { - public var name: String = "A" - - public open fun foo(s: String): String { - System.out.println(s) - return "A " + s - } -} \ No newline at end of file
diff --git a/idea/testData/hierarchy/calls/callees/javaMethod/JavaMethod_verification.xml b/idea/testData/hierarchy/calls/callees/javaMethod/JavaMethod_verification.xml deleted file mode 100644 index dccd4d3..0000000 --- a/idea/testData/hierarchy/calls/callees/javaMethod/JavaMethod_verification.xml +++ /dev/null
@@ -1,18 +0,0 @@ -<node text="KClient.bar() ()" base="true"> - <node text="KA.KA()(2 usages) ()"/> - <node text="KA.foo(String)(2 usages) ()"/> - <node text="JA.JA()(4 usages) ()"/> - <node text="JA.getName()(2 usages) ()"/> - <node text="JA.foo(String)(2 usages) ()"> - <node text="PrintStream.println(String) (java.io)"/> - </node> - <node text="Anonymous in bar() in KClient.run() ()"> - <node text="KA.KA() ()"/> - <node text="KA.foo(String) ()"/> - <node text="JA.JA()(2 usages) ()"/> - <node text="JA.getName() ()"/> - <node text="JA.foo(String) ()"> - <node text="PrintStream.println(String) (java.io)"/> - </node> - </node> -</node>
diff --git a/idea/testData/hierarchy/calls/callees/javaMethod/main0.java b/idea/testData/hierarchy/calls/callees/javaMethod/main0.java deleted file mode 100644 index c18428c..0000000 --- a/idea/testData/hierarchy/calls/callees/javaMethod/main0.java +++ /dev/null
@@ -1,25 +0,0 @@ -class KA { - public KA() { - - } - - public final String name = "A"; - - public final String foo(String s) { - return "A " + s; - } -} - -class KClient { - public final void <caret>bar() { - new KA().foo(""); - new JA().foo(new JA().getName()); - - new Runnable() { - public void run() { - new KA().foo(""); - new JA().foo(new JA().getName()); - } - }.run(); - } -} \ No newline at end of file
diff --git a/idea/testData/hierarchy/calls/callees/javaMethod/main1.kt b/idea/testData/hierarchy/calls/callees/javaMethod/main1.kt deleted file mode 100644 index c5621a7..0000000 --- a/idea/testData/hierarchy/calls/callees/javaMethod/main1.kt +++ /dev/null
@@ -1,8 +0,0 @@ -open class JA() { - public var name: String = "A" - - public open fun foo(s: String): String { - System.out.println(s) - return "A " + s - } -}
diff --git a/idea/testData/hierarchy/calls/callers/javaConstructor/JavaConstructor_verification.xml b/idea/testData/hierarchy/calls/callers/javaConstructor/JavaConstructor_verification.xml deleted file mode 100644 index cb7b9cd..0000000 --- a/idea/testData/hierarchy/calls/callers/javaConstructor/JavaConstructor_verification.xml +++ /dev/null
@@ -1,10 +0,0 @@ -<node text="KA.KA() ()" base="true"> - <node text="KClient.bar() ()"/> - <node text="KClient.getBar() ()"/> - <node text="KClient ()"/> - <node text="JA.JA() ()"/> - <node text="JA.newKA() ()"/> - <node text="JA ()"/> - <node text="JA.JA(Int) ()"/> - <node text="JA2 ()"/> -</node>
diff --git a/idea/testData/hierarchy/calls/callers/javaConstructor/main0.java b/idea/testData/hierarchy/calls/callers/javaConstructor/main0.java deleted file mode 100644 index 04707c6..0000000 --- a/idea/testData/hierarchy/calls/callers/javaConstructor/main0.java +++ /dev/null
@@ -1,27 +0,0 @@ -class KA { - public <caret>KA() { - - } - - public final String name = "A"; - - public String foo(String s) { - return "A " + s; - } -} - -class KClient { - { - new KA(); - } - - public static final a = new KA(); - - public final String getBar() { - return new KA().name; - } - - public final KA bar() { - return new KA(); - } -} \ No newline at end of file
diff --git a/idea/testData/hierarchy/calls/callers/javaConstructor/main1.kt b/idea/testData/hierarchy/calls/callers/javaConstructor/main1.kt deleted file mode 100644 index bd7efb9..0000000 --- a/idea/testData/hierarchy/calls/callers/javaConstructor/main1.kt +++ /dev/null
@@ -1,19 +0,0 @@ -open class JA: KA { - constructor() { - - } - - constructor(a: Int): super() { - - } - - public var name: String = KA().getName() - - public open fun newKA(): KA? { - return KA() - } -} - -class JA2: KA() { - -} \ No newline at end of file
diff --git a/idea/testData/hierarchy/calls/callers/javaMethod/JavaMethod_verification.xml b/idea/testData/hierarchy/calls/callers/javaMethod/JavaMethod_verification.xml deleted file mode 100644 index 52751e5..0000000 --- a/idea/testData/hierarchy/calls/callers/javaMethod/JavaMethod_verification.xml +++ /dev/null
@@ -1,7 +0,0 @@ -<node text="KA.foo(String) ()" base="true"> - <node text="JA(2 usages) ()"/> - <node text="JA.foo()(2 usages) ()"/> - <node text="KClient(4 usages) ()"/> - <node text="KClient.bar()(2 usages) ()"/> - <node text="KClient.getBar()(2 usages) ()"/> -</node>
diff --git a/idea/testData/hierarchy/calls/callers/javaMethod/main0.java b/idea/testData/hierarchy/calls/callers/javaMethod/main0.java deleted file mode 100644 index ee37869..0000000 --- a/idea/testData/hierarchy/calls/callers/javaMethod/main0.java +++ /dev/null
@@ -1,31 +0,0 @@ -class KBase { - public String foo(String s) { - return s; - } -} - -class KA extends KBase { - public final String name = "A"; - - @Override - public final String <caret>foo(String s) { - return "A " + s; - } -} - -class KClient { - { - new KBase().foo(""); - new KA().foo(""); - } - - public static final String a = new KBase().foo("") + new KA().foo(""); - - public final String getBar() { - return new KBase().foo("") + new KA().foo(""); - } - - public final String bar() { - return new KBase().foo("") + new KA().foo(""); - } -} \ No newline at end of file
diff --git a/idea/testData/hierarchy/calls/callers/javaMethod/main1.kt b/idea/testData/hierarchy/calls/callers/javaMethod/main1.kt deleted file mode 100644 index 74c4ae4..0000000 --- a/idea/testData/hierarchy/calls/callers/javaMethod/main1.kt +++ /dev/null
@@ -1,7 +0,0 @@ -open class JA() { - public var name: String = KBase().foo("") + KA().foo("") - - public open fun foo(): String { - return KBase().foo("") + KA().foo("") - } -} \ No newline at end of file
diff --git a/idea/testData/hierarchy/overrides/javaMethodInClass/JavaMethodInClass_verification.xml b/idea/testData/hierarchy/overrides/javaMethodInClass/JavaMethodInClass_verification.xml deleted file mode 100644 index ffa3812..0000000 --- a/idea/testData/hierarchy/overrides/javaMethodInClass/JavaMethodInClass_verification.xml +++ /dev/null
@@ -1,12 +0,0 @@ -<node text="A ()" base="true"> - <node text="B ()"/> - <node text="T ()"> - <node text="C ()"/> - <node text="Y ()"/> - </node> - <node text="X ()"> - <node text="Z ()"> - <node text="D ()"/> - </node> - </node> -</node>
diff --git a/idea/testData/hierarchy/overrides/javaMethodInClass/main0.java b/idea/testData/hierarchy/overrides/javaMethodInClass/main0.java deleted file mode 100644 index 03b5482..0000000 --- a/idea/testData/hierarchy/overrides/javaMethodInClass/main0.java +++ /dev/null
@@ -1,30 +0,0 @@ -class A { - public void <caret>foo() { - - } -} - -class B extends A { - @Override - public void foo() { - - } -} - -class C implements T { - @Override - public void foo() { - - } -} - -class D extends Z { - @Override - public void foo() { - - } -} - -class S { - -} \ No newline at end of file
diff --git a/idea/testData/hierarchy/overrides/javaMethodInClass/main1.kt b/idea/testData/hierarchy/overrides/javaMethodInClass/main1.kt deleted file mode 100644 index 97e7ca6..0000000 --- a/idea/testData/hierarchy/overrides/javaMethodInClass/main1.kt +++ /dev/null
@@ -1,27 +0,0 @@ -interface T: A { - override fun foo() { - - } -} - -open class X: A() { - override fun foo() { - - } -} - -open class Y: T { - override fun foo() { - - } -} - -open class Z: X() { - override fun foo() { - - } -} - -class SS { - -} \ No newline at end of file
diff --git a/idea/testData/hierarchy/overrides/javaMethodInInterface/JavaMethodInInterface_verification.xml b/idea/testData/hierarchy/overrides/javaMethodInInterface/JavaMethodInInterface_verification.xml deleted file mode 100644 index ffa3812..0000000 --- a/idea/testData/hierarchy/overrides/javaMethodInInterface/JavaMethodInInterface_verification.xml +++ /dev/null
@@ -1,12 +0,0 @@ -<node text="A ()" base="true"> - <node text="B ()"/> - <node text="T ()"> - <node text="C ()"/> - <node text="Y ()"/> - </node> - <node text="X ()"> - <node text="Z ()"> - <node text="D ()"/> - </node> - </node> -</node>
diff --git a/idea/testData/hierarchy/overrides/javaMethodInInterface/main0.java b/idea/testData/hierarchy/overrides/javaMethodInInterface/main0.java deleted file mode 100644 index 836c565..0000000 --- a/idea/testData/hierarchy/overrides/javaMethodInInterface/main0.java +++ /dev/null
@@ -1,28 +0,0 @@ -interface A { - public void <caret>foo(); -} - -class B implements A { - @Override - public void foo() { - - } -} - -class C implements T { - @Override - public void foo() { - - } -} - -class D extends Z { - @Override - public void foo() { - - } -} - -class S { - -} \ No newline at end of file
diff --git a/idea/testData/hierarchy/overrides/javaMethodInInterface/main1.kt b/idea/testData/hierarchy/overrides/javaMethodInInterface/main1.kt deleted file mode 100644 index dd5bdde..0000000 --- a/idea/testData/hierarchy/overrides/javaMethodInInterface/main1.kt +++ /dev/null
@@ -1,27 +0,0 @@ -interface T: A { - override fun foo() { - - } -} - -open class X: A { - override fun foo() { - - } -} - -open class Y: T { - override fun foo() { - - } -} - -open class Z: X() { - override fun foo() { - - } -} - -class SS { - -} \ No newline at end of file
diff --git a/idea/tests/org/jetbrains/kotlin/idea/hierarchy/AbstractHierarchyTest.java b/idea/tests/org/jetbrains/kotlin/idea/hierarchy/AbstractHierarchyTest.java index 8a076e8..2dacfeb 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/hierarchy/AbstractHierarchyTest.java +++ b/idea/tests/org/jetbrains/kotlin/idea/hierarchy/AbstractHierarchyTest.java
@@ -202,8 +202,14 @@ super.doHierarchyTest(treeStructureComputable, fileNames); } catch (RefactoringErrorHintException e) { - String expectedMessage = FileUtil.loadFile(new File(folderName, "messages.txt"), true); - assertEquals(expectedMessage, e.getLocalizedMessage()); + File file = new File(folderName, "messages.txt"); + if (file.exists()) { + String expectedMessage = FileUtil.loadFile(file, true); + assertEquals(expectedMessage, e.getLocalizedMessage()); + } + else { + fail("Unexpected error: " + e.getLocalizedMessage()); + } } }
diff --git a/idea/tests/org/jetbrains/kotlin/idea/hierarchy/HierarchyTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/hierarchy/HierarchyTestGenerated.java index 82ae9672..0ed884c 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/hierarchy/HierarchyTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/hierarchy/HierarchyTestGenerated.java
@@ -286,18 +286,6 @@ KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("idea/testData/hierarchy/calls/callers"), Pattern.compile("^([^\\.]+)$"), false); } - @TestMetadata("javaConstructor") - public void testJavaConstructor() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("idea/testData/hierarchy/calls/callers/javaConstructor/"); - doCallerHierarchyTest(fileName); - } - - @TestMetadata("javaMethod") - public void testJavaMethod() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("idea/testData/hierarchy/calls/callers/javaMethod/"); - doCallerHierarchyTest(fileName); - } - @TestMetadata("kotlinClass") public void testKotlinClass() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("idea/testData/hierarchy/calls/callers/kotlinClass/"); @@ -421,18 +409,6 @@ KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("idea/testData/hierarchy/calls/callees"), Pattern.compile("^([^\\.]+)$"), false); } - @TestMetadata("javaConstructor") - public void testJavaConstructor() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("idea/testData/hierarchy/calls/callees/javaConstructor/"); - doCalleeHierarchyTest(fileName); - } - - @TestMetadata("javaMethod") - public void testJavaMethod() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("idea/testData/hierarchy/calls/callees/javaMethod/"); - doCalleeHierarchyTest(fileName); - } - @TestMetadata("kotlinAnonymousObject") public void testKotlinAnonymousObject() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("idea/testData/hierarchy/calls/callees/kotlinAnonymousObject/"); @@ -520,18 +496,6 @@ KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("idea/testData/hierarchy/overrides"), Pattern.compile("^([^\\.]+)$"), false); } - @TestMetadata("javaMethodInClass") - public void testJavaMethodInClass() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("idea/testData/hierarchy/overrides/javaMethodInClass/"); - doOverrideHierarchyTest(fileName); - } - - @TestMetadata("javaMethodInInterface") - public void testJavaMethodInInterface() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("idea/testData/hierarchy/overrides/javaMethodInInterface/"); - doOverrideHierarchyTest(fileName); - } - @TestMetadata("kotlinFunctionInClass") public void testKotlinFunctionInClass() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("idea/testData/hierarchy/overrides/kotlinFunctionInClass/");