diff --git a/idea/testData/findUsages/java/findJavaClassUsages/JKInnerClassAllUsages.0.java b/idea/testData/findUsages/java/findJavaClassUsages/JKInnerClassAllUsages.0.java new file mode 100644 index 00000000000..65795c41a7b --- /dev/null +++ b/idea/testData/findUsages/java/findJavaClassUsages/JKInnerClassAllUsages.0.java @@ -0,0 +1,11 @@ +// PSI_ELEMENT: com.intellij.psi.PsiClass +// OPTIONS: usages +public class Outer { + public class A { + public String bar = "bar"; + + public void foo() { + + } + } +} \ No newline at end of file diff --git a/idea/testData/findUsages/java/findJavaClassUsages/JKInnerClassAllUsages.1.kt b/idea/testData/findUsages/java/findJavaClassUsages/JKInnerClassAllUsages.1.kt new file mode 100644 index 00000000000..3334f6eada5 --- /dev/null +++ b/idea/testData/findUsages/java/findJavaClassUsages/JKInnerClassAllUsages.1.kt @@ -0,0 +1,31 @@ +public class KOuter: Outer() { + public inner class X(bar: String? = (this@KOuter : Outer).A().bar): Outer.A() { + var next: Outer.A? = (this@KOuter : Outer).A() + val myBar: String? = (this@KOuter : Outer).A().bar + + { + (this@KOuter : Outer).A().bar = "" + } + + fun foo(a: Outer.A) { + val aa: Outer.A = a + aa.bar = "" + } + + fun getNext(): Outer.A? { + return next + } + + public override fun foo() { + super.foo() + } + } +} + +fun KOuter.X.bar(a: Outer.A = Outer().A()) { + +} + +fun Any.toA(): Outer.A? { + return if (this is Outer.A) this as Outer.A else null +} \ No newline at end of file diff --git a/idea/testData/findUsages/java/findJavaClassUsages/JKInnerClassAllUsages.results.txt b/idea/testData/findUsages/java/findJavaClassUsages/JKInnerClassAllUsages.results.txt new file mode 100644 index 00000000000..64bb2ce5a60 --- /dev/null +++ b/idea/testData/findUsages/java/findJavaClassUsages/JKInnerClassAllUsages.results.txt @@ -0,0 +1,15 @@ +Class/object property type (3: 25) var next: Outer.A? = (this@KOuter : Outer).A() +Function return types (15: 30) fun getNext(): Outer.A? { +Function return types (29: 22) fun Any.toA(): Outer.A? { +Local variable declaration (11: 27) val aa: Outer.A = a +New instance creation (25: 39) fun KOuter.X.bar(a: Outer.A = Outer().A()) { +New instance creation (2: 63) public inner class X(bar: String? = (this@KOuter : Outer).A().bar): Outer.A() { +New instance creation (3: 52) var next: Outer.A? = (this@KOuter : Outer).A() +New instance creation (4: 52) val myBar: String? = (this@KOuter : Outer).A().bar +New instance creation (7: 35) (this@KOuter : Outer).A().bar = "" +Parameter type (10: 26) fun foo(a: Outer.A) { +Parameter type (25: 27) fun KOuter.X.bar(a: Outer.A = Outer().A()) { +Super type qualifier (20: 25) super.foo() +Supertype (2: 79) public inner class X(bar: String? = (this@KOuter : Outer).A().bar): Outer.A() { +Target type of 'is' operation (30: 30) return if (this is Outer.A) this as Outer.A else null +Usage in cast target type (30: 47) return if (this is Outer.A) this as Outer.A else null diff --git a/idea/testData/findUsages/java/findJavaClassUsages/JKNestedClassAllUsages.0.java b/idea/testData/findUsages/java/findJavaClassUsages/JKNestedClassAllUsages.0.java new file mode 100644 index 00000000000..8cc70a43390 --- /dev/null +++ b/idea/testData/findUsages/java/findJavaClassUsages/JKNestedClassAllUsages.0.java @@ -0,0 +1,17 @@ +// PSI_ELEMENT: com.intellij.psi.PsiClass +// OPTIONS: usages +public class Outer { + public static class A { + public String bar = "bar"; + public static String BAR = "BAR"; + + public void foo() { + + } + + public static void foos() { + + } + } +} + diff --git a/idea/testData/findUsages/java/findJavaClassUsages/JKNestedClassAllUsages.1.kt b/idea/testData/findUsages/java/findJavaClassUsages/JKNestedClassAllUsages.1.kt new file mode 100644 index 00000000000..791da4729ae --- /dev/null +++ b/idea/testData/findUsages/java/findJavaClassUsages/JKNestedClassAllUsages.1.kt @@ -0,0 +1,38 @@ +public class X(bar: String? = Outer.A.BAR): Outer.A() { + var next: Outer.A? = Outer.A() + val myBar: String? = Outer.A.BAR + + { + Outer.A.BAR = "" + Outer.A.foos() + } + + fun foo(a: Outer.A) { + val aa: Outer.A = a + aa.bar = "" + } + + fun getNext(): Outer.A? { + return next + } + + public override fun foo() { + super.foo() + } + + class object: Outer.A() { + + } +} + +object O: Outer.A() { + +} + +fun X.bar(a: Outer.A = Outer.A()) { + +} + +fun Any.toA(): Outer.A? { + return if (this is Outer.A) this as Outer.A else null +} \ No newline at end of file diff --git a/idea/testData/findUsages/java/findJavaClassUsages/JKNestedClassAllUsages.results.txt b/idea/testData/findUsages/java/findJavaClassUsages/JKNestedClassAllUsages.results.txt new file mode 100644 index 00000000000..d46cb90d8f9 --- /dev/null +++ b/idea/testData/findUsages/java/findJavaClassUsages/JKNestedClassAllUsages.results.txt @@ -0,0 +1,18 @@ +Class/object property type (2: 21) var next: Outer.A? = Outer.A() +Function return types (15: 26) fun getNext(): Outer.A? { +Function return types (36: 22) fun Any.toA(): Outer.A? { +Local variable declaration (11: 23) val aa: Outer.A = a +Nested class/object (1: 37) public class X(bar: String? = Outer.A.BAR): Outer.A() { +Nested class/object (3: 32) val myBar: String? = Outer.A.BAR +Nested class/object (6: 15) Outer.A.BAR = "" +Nested class/object (7: 15) Outer.A.foos() +New instance creation (2: 32) var next: Outer.A? = Outer.A() +New instance creation (32: 30) fun X.bar(a: Outer.A = Outer.A()) { +Parameter type (10: 22) fun foo(a: Outer.A) { +Parameter type (32: 20) fun X.bar(a: Outer.A = Outer.A()) { +Super type qualifier (20: 21) super.foo() +Supertype (1: 51) public class X(bar: String? = Outer.A.BAR): Outer.A() { +Supertype (23: 25) class object: Outer.A() { +Supertype (28: 17) object O: Outer.A() { +Target type of 'is' operation (37: 30) return if (this is Outer.A) this as Outer.A else null +Usage in cast target type (37: 47) return if (this is Outer.A) this as Outer.A else null diff --git a/idea/testData/findUsages/kotlin/findClassUsages/kotlinInnerClassAllUsages.0.kt b/idea/testData/findUsages/kotlin/findClassUsages/kotlinInnerClassAllUsages.0.kt new file mode 100644 index 00000000000..fbb263a8052 --- /dev/null +++ b/idea/testData/findUsages/kotlin/findClassUsages/kotlinInnerClassAllUsages.0.kt @@ -0,0 +1,13 @@ +// PSI_ELEMENT: org.jetbrains.jet.lang.psi.JetClass +// OPTIONS: usages, constructorUsages +package a + +public open class Outer { + public open inner class A { + public var bar: String = "bar"; + + public open fun foo() { + + } + } +} \ No newline at end of file diff --git a/idea/testData/findUsages/kotlin/findClassUsages/kotlinInnerClassAllUsages.1.kt b/idea/testData/findUsages/kotlin/findClassUsages/kotlinInnerClassAllUsages.1.kt new file mode 100644 index 00000000000..ab16c2a51cc --- /dev/null +++ b/idea/testData/findUsages/kotlin/findClassUsages/kotlinInnerClassAllUsages.1.kt @@ -0,0 +1,39 @@ +package b + +import a.Outer + +public class KOuter: Outer() { + public inner class X(bar: String? = (this@KOuter : Outer).A().bar): Outer.A() { + var next: Outer.A? = (this@KOuter : Outer).A() + val myBar: String? = (this@KOuter : Outer).A().bar + + { + (this@KOuter : Outer).A().bar = "" + } + + fun foo(a: Outer.A) { + val aa: Outer.A = a + aa.bar = "" + } + + fun getNext(): Outer.A? { + return next + } + + public override fun foo() { + super.foo() + } + } +} + +fun KOuter.X.bar(a: Outer.A = Outer().A()) { + +} + +fun Any.toA(): Outer.A? { + return if (this is Outer.A) this as Outer.A else null +} + +fun Any.asServer(): Outer.A? { + return if (this is Outer.A) this as Outer.A else null +} \ No newline at end of file diff --git a/idea/testData/findUsages/kotlin/findClassUsages/kotlinInnerClassAllUsages.results.txt b/idea/testData/findUsages/kotlin/findClassUsages/kotlinInnerClassAllUsages.results.txt new file mode 100644 index 00000000000..d4567a8c8af --- /dev/null +++ b/idea/testData/findUsages/kotlin/findClassUsages/kotlinInnerClassAllUsages.results.txt @@ -0,0 +1,18 @@ +Class/object property type (7: 25) var next: Outer.A? = (this@KOuter : Outer).A() +Function return types (19: 30) fun getNext(): Outer.A? { +Function return types (33: 22) fun Any.toA(): Outer.A? { +Function return types (37: 27) fun Any.asServer(): Outer.A? { +Local variable declaration (15: 27) val aa: Outer.A = a +New instance creation (11: 35) (this@KOuter : Outer).A().bar = "" +New instance creation (29: 39) fun KOuter.X.bar(a: Outer.A = Outer().A()) { +New instance creation (6: 63) public inner class X(bar: String? = (this@KOuter : Outer).A().bar): Outer.A() { +New instance creation (7: 52) var next: Outer.A? = (this@KOuter : Outer).A() +New instance creation (8: 52) val myBar: String? = (this@KOuter : Outer).A().bar +Parameter type (14: 26) fun foo(a: Outer.A) { +Parameter type (29: 27) fun KOuter.X.bar(a: Outer.A = Outer().A()) { +Super type qualifier (24: 25) super.foo() +Supertype (6: 79) public inner class X(bar: String? = (this@KOuter : Outer).A().bar): Outer.A() { +Target type of 'is' operation (34: 30) return if (this is Outer.A) this as Outer.A else null +Target type of 'is' operation (38: 30) return if (this is Outer.A) this as Outer.A else null +Usage in cast target type (34: 47) return if (this is Outer.A) this as Outer.A else null +Usage in cast target type (38: 47) return if (this is Outer.A) this as Outer.A else null diff --git a/idea/testData/findUsages/kotlin/findClassUsages/kotlinNestedClassAllUsages.0.kt b/idea/testData/findUsages/kotlin/findClassUsages/kotlinNestedClassAllUsages.0.kt new file mode 100644 index 00000000000..07037e2c42d --- /dev/null +++ b/idea/testData/findUsages/kotlin/findClassUsages/kotlinNestedClassAllUsages.0.kt @@ -0,0 +1,21 @@ +// PSI_ELEMENT: org.jetbrains.jet.lang.psi.JetClass +// OPTIONS: usages, constructorUsages +package a + +public open class Outer { + public open class A { + public var bar: String = "bar"; + + public open fun foo() { + + } + + class object { + public var bar: String = "bar"; + + public open fun foo() { + + } + } + } +} \ No newline at end of file diff --git a/idea/testData/findUsages/kotlin/findClassUsages/kotlinNestedClassAllUsages.1.kt b/idea/testData/findUsages/kotlin/findClassUsages/kotlinNestedClassAllUsages.1.kt new file mode 100644 index 00000000000..e9a102b2a6a --- /dev/null +++ b/idea/testData/findUsages/kotlin/findClassUsages/kotlinNestedClassAllUsages.1.kt @@ -0,0 +1,42 @@ +package b + +import a.Outer + +public class X(bar: String? = Outer.A.bar): Outer.A() { + var next: Outer.A? = Outer.A() + val myBar: String? = Outer.A.bar + + { + Outer.A.bar = "" + Outer.A.foo() + } + + fun foo(a: Outer.A) { + val aa: Outer.A = a + aa.bar = "" + } + + fun getNext(): Outer.A? { + return next + } + + public override fun foo() { + super.foo() + } + + class object: Outer.A() { + + } +} + +object O: Outer.A() { + +} + +fun X.bar(a: Outer.A = Outer.A()) { + +} + +fun Any.toA(): Outer.A? { + return if (this is Outer.A) this as Outer.A else null +} \ No newline at end of file diff --git a/idea/testData/findUsages/kotlin/findClassUsages/kotlinNestedClassAllUsages.results.txt b/idea/testData/findUsages/kotlin/findClassUsages/kotlinNestedClassAllUsages.results.txt new file mode 100644 index 00000000000..37b838540c6 --- /dev/null +++ b/idea/testData/findUsages/kotlin/findClassUsages/kotlinNestedClassAllUsages.results.txt @@ -0,0 +1,18 @@ +Class/object property type (6: 21) var next: Outer.A? = Outer.A() +Function return types (19: 26) fun getNext(): Outer.A? { +Function return types (40: 22) fun Any.toA(): Outer.A? { +Local variable declaration (15: 23) val aa: Outer.A = a +Nested class/object (10: 15) Outer.A.bar = "" +Nested class/object (11: 15) Outer.A.foo() +Nested class/object (5: 37) public class X(bar: String? = Outer.A.bar): Outer.A() { +Nested class/object (7: 32) val myBar: String? = Outer.A.bar +New instance creation (36: 30) fun X.bar(a: Outer.A = Outer.A()) { +New instance creation (6: 32) var next: Outer.A? = Outer.A() +Parameter type (14: 22) fun foo(a: Outer.A) { +Parameter type (36: 20) fun X.bar(a: Outer.A = Outer.A()) { +Super type qualifier (24: 21) super.foo() +Supertype (27: 25) class object: Outer.A() { +Supertype (32: 17) object O: Outer.A() { +Supertype (5: 51) public class X(bar: String? = Outer.A.bar): Outer.A() { +Target type of 'is' operation (41: 30) return if (this is Outer.A) this as Outer.A else null +Usage in cast target type (41: 47) return if (this is Outer.A) this as Outer.A else null diff --git a/idea/testData/findUsages/kotlin/findObjectUsages/kotlinNestedObjectUsages.0.kt b/idea/testData/findUsages/kotlin/findObjectUsages/kotlinNestedObjectUsages.0.kt new file mode 100644 index 00000000000..fa0d5503cb6 --- /dev/null +++ b/idea/testData/findUsages/kotlin/findObjectUsages/kotlinNestedObjectUsages.0.kt @@ -0,0 +1,8 @@ +// PSI_ELEMENT: org.jetbrains.jet.lang.psi.JetObjectDeclarationName +package a + +class A { + object O { + var foo: String = "foo" + } +} diff --git a/idea/testData/findUsages/kotlin/findObjectUsages/kotlinNestedObjectUsages.1.kt b/idea/testData/findUsages/kotlin/findObjectUsages/kotlinNestedObjectUsages.1.kt new file mode 100644 index 00000000000..f83a26d3976 --- /dev/null +++ b/idea/testData/findUsages/kotlin/findObjectUsages/kotlinNestedObjectUsages.1.kt @@ -0,0 +1,14 @@ +package b + +import a.A.O +import a.A + +class Client { + fun fooBar() { + val a = A() + + println("foo = ${a.O.foo}") + val obj = a.O + println("length: ${obj.foo.length}") + } +} \ No newline at end of file diff --git a/idea/testData/findUsages/kotlin/findObjectUsages/kotlinNestedObjectUsages.results.txt b/idea/testData/findUsages/kotlin/findObjectUsages/kotlinNestedObjectUsages.results.txt new file mode 100644 index 00000000000..87a7ce5d980 --- /dev/null +++ b/idea/testData/findUsages/kotlin/findObjectUsages/kotlinNestedObjectUsages.results.txt @@ -0,0 +1,3 @@ +Receiver (10: 28) println("foo = ${a.O.foo}") +Usage in import (3: 12) import a.A.O +Value read (11: 21) val obj = a.O diff --git a/idea/tests/org/jetbrains/jet/findUsages/JetFindUsagesTest.java b/idea/tests/org/jetbrains/jet/findUsages/JetFindUsagesTest.java index ebc5e0f98df..201e9e03810 100644 --- a/idea/tests/org/jetbrains/jet/findUsages/JetFindUsagesTest.java +++ b/idea/tests/org/jetbrains/jet/findUsages/JetFindUsagesTest.java @@ -170,6 +170,11 @@ public class JetFindUsagesTest extends AbstractJetFindUsagesTest { doTest("idea/testData/findUsages/kotlin/findClassUsages/kotlinDerivedInterfaceUsages2.0.kt"); } + @TestMetadata("kotlinInnerClassAllUsages.0.kt") + public void testKotlinInnerClassAllUsages() throws Exception { + doTest("idea/testData/findUsages/kotlin/findClassUsages/kotlinInnerClassAllUsages.0.kt"); + } + @TestMetadata("kotlinLocalClassUsages1.0.kt") public void testKotlinLocalClassUsages1() throws Exception { doTest("idea/testData/findUsages/kotlin/findClassUsages/kotlinLocalClassUsages1.0.kt"); @@ -180,6 +185,11 @@ public class JetFindUsagesTest extends AbstractJetFindUsagesTest { doTest("idea/testData/findUsages/kotlin/findClassUsages/kotlinLocalClassUsages2.0.kt"); } + @TestMetadata("kotlinNestedClassAllUsages.0.kt") + public void testKotlinNestedClassAllUsages() throws Exception { + doTest("idea/testData/findUsages/kotlin/findClassUsages/kotlinNestedClassAllUsages.0.kt"); + } + @TestMetadata("kotlinPrivateClassUsages.0.kt") public void testKotlinPrivateClassUsages() throws Exception { doTest("idea/testData/findUsages/kotlin/findClassUsages/kotlinPrivateClassUsages.0.kt"); @@ -261,6 +271,11 @@ public class JetFindUsagesTest extends AbstractJetFindUsagesTest { doTest("idea/testData/findUsages/kotlin/findObjectUsages/kotlinLocalObjectUsages2.0.kt"); } + @TestMetadata("kotlinNestedObjectUsages.0.kt") + public void testKotlinNestedObjectUsages() throws Exception { + doTest("idea/testData/findUsages/kotlin/findObjectUsages/kotlinNestedObjectUsages.0.kt"); + } + @TestMetadata("kotlinObjectUsages.0.kt") public void testKotlinObjectUsages() throws Exception { doTest("idea/testData/findUsages/kotlin/findObjectUsages/kotlinObjectUsages.0.kt"); @@ -418,6 +433,16 @@ public class JetFindUsagesTest extends AbstractJetFindUsagesTest { doTest("idea/testData/findUsages/java/findJavaClassUsages/JKDerivedClasses3.0.java"); } + @TestMetadata("JKInnerClassAllUsages.0.java") + public void testJKInnerClassAllUsages() throws Exception { + doTest("idea/testData/findUsages/java/findJavaClassUsages/JKInnerClassAllUsages.0.java"); + } + + @TestMetadata("JKNestedClassAllUsages.0.java") + public void testJKNestedClassAllUsages() throws Exception { + doTest("idea/testData/findUsages/java/findJavaClassUsages/JKNestedClassAllUsages.0.java"); + } + } @TestMetadata("idea/testData/findUsages/java/findJavaFieldUsages")