diff --git a/compiler/jet.as.java.psi/src/org/jetbrains/jet/asJava/JetClsMethodImpl.java b/compiler/jet.as.java.psi/src/org/jetbrains/jet/asJava/JetClsMethodImpl.java index 50934d478d2..606e1d7d133 100644 --- a/compiler/jet.as.java.psi/src/org/jetbrains/jet/asJava/JetClsMethodImpl.java +++ b/compiler/jet.as.java.psi/src/org/jetbrains/jet/asJava/JetClsMethodImpl.java @@ -53,4 +53,10 @@ public class JetClsMethodImpl extends ClsMethodImpl implements JetClsMethod { public void delete() throws IncorrectOperationException { origin.delete(); } + + @Override + public boolean isEquivalentTo(PsiElement another) { + if (another instanceof JetClsMethod && getOrigin().equals(((JetClsMethod) another).getOrigin())) return true; + return super.isEquivalentTo(another); + } } diff --git a/idea/testData/findUsages/findMethodUsages/kotlinTopLevelMethodUsages.2.java b/idea/testData/findUsages/findMethodUsages/kotlinTopLevelMethodUsages.2.java new file mode 100644 index 00000000000..2e17ff9669c --- /dev/null +++ b/idea/testData/findUsages/findMethodUsages/kotlinTopLevelMethodUsages.2.java @@ -0,0 +1,11 @@ +package client; + +import server.ServerPackage; + +class JClient { + String s = ServerPackage.processRequest(); + + String sendRequest() { + return ServerPackage.processRequest(); + } +} \ No newline at end of file diff --git a/idea/testData/findUsages/findMethodUsages/kotlinTopLevelMethodUsages.results.txt b/idea/testData/findUsages/findMethodUsages/kotlinTopLevelMethodUsages.results.txt index 6af85d2954b..c7646b4ca83 100644 --- a/idea/testData/findUsages/findMethodUsages/kotlinTopLevelMethodUsages.results.txt +++ b/idea/testData/findUsages/findMethodUsages/kotlinTopLevelMethodUsages.results.txt @@ -1,3 +1,5 @@ Callable reference (6: 23) val methodRef = ::processRequest() Function call (10: 9) processRequest() -Import directive (3: 15) import server.processRequest \ No newline at end of file +Import directive (3: 15) import server.processRequest +Unclassified usage (6: 30) String s = ServerPackage.processRequest(); +Unclassified usage (9: 30) return ServerPackage.processRequest(); diff --git a/idea/testData/findUsages/findPropertyUsages/kotlinPropertyUsages.results.txt b/idea/testData/findUsages/findPropertyUsages/kotlinPropertyUsages.results.txt deleted file mode 100644 index 7968c8e56cd..00000000000 --- a/idea/testData/findUsages/findPropertyUsages/kotlinPropertyUsages.results.txt +++ /dev/null @@ -1,3 +0,0 @@ -Import directive (3: 15) import server.foo -Receiver (8: 35) println("length: ${server.foo.length()}") -Selector (7: 33) println("foo = ${server.foo}") \ No newline at end of file diff --git a/idea/testData/findUsages/findPropertyUsages/kotlinPropertyUsages.0.kt b/idea/testData/findUsages/findPropertyUsages/kotlinTopLevelPropertyUsages.0.kt similarity index 100% rename from idea/testData/findUsages/findPropertyUsages/kotlinPropertyUsages.0.kt rename to idea/testData/findUsages/findPropertyUsages/kotlinTopLevelPropertyUsages.0.kt diff --git a/idea/testData/findUsages/findPropertyUsages/kotlinPropertyUsages.1.kt b/idea/testData/findUsages/findPropertyUsages/kotlinTopLevelPropertyUsages.1.kt similarity index 100% rename from idea/testData/findUsages/findPropertyUsages/kotlinPropertyUsages.1.kt rename to idea/testData/findUsages/findPropertyUsages/kotlinTopLevelPropertyUsages.1.kt diff --git a/idea/testData/findUsages/findPropertyUsages/kotlinTopLevelPropertyUsages.2.java b/idea/testData/findUsages/findPropertyUsages/kotlinTopLevelPropertyUsages.2.java new file mode 100644 index 00000000000..868c35bd6de --- /dev/null +++ b/idea/testData/findUsages/findPropertyUsages/kotlinTopLevelPropertyUsages.2.java @@ -0,0 +1,11 @@ +package client; + +import server.ServerPackage; + +class JClient { + void fooBar() { + System.out.println("foo = " + ServerPackage.getFoo()); + System.out.println("length: " + ServerPackage.getFoo().length()); + ServerPackage.setFoo(""); + } +} \ No newline at end of file diff --git a/idea/testData/findUsages/findPropertyUsages/kotlinTopLevelPropertyUsages.results.txt b/idea/testData/findUsages/findPropertyUsages/kotlinTopLevelPropertyUsages.results.txt new file mode 100644 index 00000000000..576e93a0b63 --- /dev/null +++ b/idea/testData/findUsages/findPropertyUsages/kotlinTopLevelPropertyUsages.results.txt @@ -0,0 +1,6 @@ +Import directive (3: 15) import server.foo +Receiver (8: 35) println("length: ${server.foo.length()}") +Selector (7: 33) println("foo = ${server.foo}") +Unclassified usage (7: 53) System.out.println("foo = " + ServerPackage.getFoo()); +Unclassified usage (8: 55) System.out.println("length: " + ServerPackage.getFoo().length()); +Unclassified usage (9: 23) ServerPackage.setFoo(""); diff --git a/idea/testData/hierarchy/calls/callees/kotlinPackageFunction/KotlinPackageFunction_verification.xml b/idea/testData/hierarchy/calls/callees/kotlinPackageFunction/KotlinPackageFunction_verification.xml new file mode 100644 index 00000000000..3631ceaf162 --- /dev/null +++ b/idea/testData/hierarchy/calls/callees/kotlinPackageFunction/KotlinPackageFunction_verification.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/idea/testData/hierarchy/calls/callees/kotlinPackageFunction/main0.kt b/idea/testData/hierarchy/calls/callees/kotlinPackageFunction/main0.kt new file mode 100644 index 00000000000..80d55c96f3e --- /dev/null +++ b/idea/testData/hierarchy/calls/callees/kotlinPackageFunction/main0.kt @@ -0,0 +1,21 @@ +class KA { + val name = "A" + fun foo(s: String): String = "A: $s" +} + +val packageVal = "" + +fun packageFun() { + fun localFun(s: String): String = s + val localVal = localFun("") + + KA().foo(KA().name) + JA().foo(JA().name) + localFun(packageVal) + + run { + KA().foo(KA().name) + JA().foo(JA().name) + KA().foo(localVal) + } +} \ No newline at end of file diff --git a/idea/testData/hierarchy/calls/callees/kotlinPackageFunction/main1.java b/idea/testData/hierarchy/calls/callees/kotlinPackageFunction/main1.java new file mode 100644 index 00000000000..c57b6f49533 --- /dev/null +++ b/idea/testData/hierarchy/calls/callees/kotlinPackageFunction/main1.java @@ -0,0 +1,12 @@ +class JA { + public JA() { + + } + + public String name = "A"; + + public String foo(String s) { + System.out.println(s); + return "A " + s; + } +} \ No newline at end of file diff --git a/idea/testData/hierarchy/calls/callees/kotlinPackageProperty/KotlinPackageProperty_verification.xml b/idea/testData/hierarchy/calls/callees/kotlinPackageProperty/KotlinPackageProperty_verification.xml new file mode 100644 index 00000000000..71af16d78fb --- /dev/null +++ b/idea/testData/hierarchy/calls/callees/kotlinPackageProperty/KotlinPackageProperty_verification.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/idea/testData/hierarchy/calls/callees/kotlinPackageProperty/main0.kt b/idea/testData/hierarchy/calls/callees/kotlinPackageProperty/main0.kt new file mode 100644 index 00000000000..95c9d6f66f4 --- /dev/null +++ b/idea/testData/hierarchy/calls/callees/kotlinPackageProperty/main0.kt @@ -0,0 +1,24 @@ +class KA { + val name = "A" + fun foo(s: String): String = "A: $s" +} + +fun packageFun(s: String): String = s + +val packageVal: String + get() { + fun localFun(s: String): String = packageFun(s) + val localVal = localFun("") + + KA().foo(KA().name) + JA().foo(JA().name) + localFun("") + + run { + KA().foo(KA().name) + JA().foo(JA().name) + packageFun(localVal) + } + + return "" + } \ No newline at end of file diff --git a/idea/testData/hierarchy/calls/callees/kotlinPackageProperty/main1.java b/idea/testData/hierarchy/calls/callees/kotlinPackageProperty/main1.java new file mode 100644 index 00000000000..c57b6f49533 --- /dev/null +++ b/idea/testData/hierarchy/calls/callees/kotlinPackageProperty/main1.java @@ -0,0 +1,12 @@ +class JA { + public JA() { + + } + + public String name = "A"; + + public String foo(String s) { + System.out.println(s); + return "A " + s; + } +} \ No newline at end of file diff --git a/idea/testData/hierarchy/calls/callers/kotlinPackageFunction/KotlinPackageFunction_verification.xml b/idea/testData/hierarchy/calls/callers/kotlinPackageFunction/KotlinPackageFunction_verification.xml new file mode 100644 index 00000000000..750da2bacb7 --- /dev/null +++ b/idea/testData/hierarchy/calls/callers/kotlinPackageFunction/KotlinPackageFunction_verification.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/idea/testData/hierarchy/calls/callers/kotlinPackageFunction/main0.kt b/idea/testData/hierarchy/calls/callers/kotlinPackageFunction/main0.kt new file mode 100644 index 00000000000..eb199f52f35 --- /dev/null +++ b/idea/testData/hierarchy/calls/callers/kotlinPackageFunction/main0.kt @@ -0,0 +1,26 @@ +fun packageFun(s: String): String = s + +val packageVal = packageFun("") + +class KClient { + { + packageFun("") + } + + class object { + val a = packageFun("") + } + + val bar: String + get() = packageFun("") + + fun bar() { + fun localFun() = packageFun("") + + packageFun("") + } +} + +object KClientObj { + val a = packageFun("") +} \ No newline at end of file diff --git a/idea/testData/hierarchy/calls/callers/kotlinPackageFunction/main1.java b/idea/testData/hierarchy/calls/callers/kotlinPackageFunction/main1.java new file mode 100644 index 00000000000..e041504a926 --- /dev/null +++ b/idea/testData/hierarchy/calls/callers/kotlinPackageFunction/main1.java @@ -0,0 +1,7 @@ +class JA { + public String name = _DefaultPackage.packageFun(""); + + public String foo() { + return _DefaultPackage.packageFun(""); + } +} \ No newline at end of file diff --git a/idea/testData/hierarchy/calls/callers/kotlinPackageProperty/KotlinPackageProperty_verification.xml b/idea/testData/hierarchy/calls/callers/kotlinPackageProperty/KotlinPackageProperty_verification.xml new file mode 100644 index 00000000000..629adb569a3 --- /dev/null +++ b/idea/testData/hierarchy/calls/callers/kotlinPackageProperty/KotlinPackageProperty_verification.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/idea/testData/hierarchy/calls/callers/kotlinPackageProperty/main0.kt b/idea/testData/hierarchy/calls/callers/kotlinPackageProperty/main0.kt new file mode 100644 index 00000000000..6653c0ab4da --- /dev/null +++ b/idea/testData/hierarchy/calls/callers/kotlinPackageProperty/main0.kt @@ -0,0 +1,30 @@ +var packageVal = "" + +fun packageFun(s: String): String = packageVal + s + +class KClient { + { + packageVal = "" + } + + class object { + val a = packageVal + } + + val bar: String + get() = packageVal + set(value: String) {packageVal = value} + + fun bar() { + fun localFun() = packageVal + + val s = packageVal + } +} + +object KClientObj { + val a = packageVal + { + packageVal = "" + } +} \ No newline at end of file diff --git a/idea/testData/hierarchy/calls/callers/kotlinPackageProperty/main1.java b/idea/testData/hierarchy/calls/callers/kotlinPackageProperty/main1.java new file mode 100644 index 00000000000..92285813931 --- /dev/null +++ b/idea/testData/hierarchy/calls/callers/kotlinPackageProperty/main1.java @@ -0,0 +1,8 @@ +class JA { + public String name = _DefaultPackage.getPackageVal(); + + public String getName() { + _DefaultPackage.setPackageVal(""); + return _DefaultPackage.getPackageVal(); + } +} \ No newline at end of file diff --git a/idea/tests/org/jetbrains/jet/findUsages/JetFindUsagesTest.java b/idea/tests/org/jetbrains/jet/findUsages/JetFindUsagesTest.java index 05e15579ffa..9193b674834 100644 --- a/idea/tests/org/jetbrains/jet/findUsages/JetFindUsagesTest.java +++ b/idea/tests/org/jetbrains/jet/findUsages/JetFindUsagesTest.java @@ -227,9 +227,9 @@ public class JetFindUsagesTest extends AbstractJetFindUsagesTest { doTest("idea/testData/findUsages/findPropertyUsages/javaPropertyUsages.0.kt"); } - @TestMetadata("kotlinPropertyUsages.0.kt") - public void testKotlinPropertyUsages() throws Exception { - doTest("idea/testData/findUsages/findPropertyUsages/kotlinPropertyUsages.0.kt"); + @TestMetadata("kotlinTopLevelPropertyUsages.0.kt") + public void testKotlinTopLevelPropertyUsages() throws Exception { + doTest("idea/testData/findUsages/findPropertyUsages/kotlinTopLevelPropertyUsages.0.kt"); } } diff --git a/idea/tests/org/jetbrains/jet/plugin/hierarchy/HierarchyTestGenerated.java b/idea/tests/org/jetbrains/jet/plugin/hierarchy/HierarchyTestGenerated.java index b2366afea66..8769c10f9f9 100644 --- a/idea/tests/org/jetbrains/jet/plugin/hierarchy/HierarchyTestGenerated.java +++ b/idea/tests/org/jetbrains/jet/plugin/hierarchy/HierarchyTestGenerated.java @@ -237,6 +237,16 @@ public class HierarchyTestGenerated extends AbstractHierarchyTest { doCallerHierarchyTest("idea/testData/hierarchy/calls/callers/kotlinNestedInnerClass"); } + @TestMetadata("kotlinPackageFunction") + public void testKotlinPackageFunction() throws Exception { + doCallerHierarchyTest("idea/testData/hierarchy/calls/callers/kotlinPackageFunction"); + } + + @TestMetadata("kotlinPackageProperty") + public void testKotlinPackageProperty() throws Exception { + doCallerHierarchyTest("idea/testData/hierarchy/calls/callers/kotlinPackageProperty"); + } + @TestMetadata("kotlinProperty") public void testKotlinProperty() throws Exception { doCallerHierarchyTest("idea/testData/hierarchy/calls/callers/kotlinProperty"); @@ -305,6 +315,16 @@ public class HierarchyTestGenerated extends AbstractHierarchyTest { doCalleeHierarchyTest("idea/testData/hierarchy/calls/callees/kotlinObject"); } + @TestMetadata("kotlinPackageFunction") + public void testKotlinPackageFunction() throws Exception { + doCalleeHierarchyTest("idea/testData/hierarchy/calls/callees/kotlinPackageFunction"); + } + + @TestMetadata("kotlinPackageProperty") + public void testKotlinPackageProperty() throws Exception { + doCalleeHierarchyTest("idea/testData/hierarchy/calls/callees/kotlinPackageProperty"); + } + @TestMetadata("kotlinProperty") public void testKotlinProperty() throws Exception { doCalleeHierarchyTest("idea/testData/hierarchy/calls/callees/kotlinProperty");