From ecd7b0c9d6b2f20fad5c9b1468a5cd9dc2187477 Mon Sep 17 00:00:00 2001 From: Alexey Tsvetkov Date: Thu, 21 Jan 2016 18:33:57 +0300 Subject: [PATCH] Add lookup for every expression's type Original commit: 310a995bb155d88596d4b0776a8f5f82a105a1cb --- .../jps/build/LookupTrackerTestGenerated.java | 6 +++ .../lookupTracker/classifierMembers/foo.kt | 40 ++++++++--------- .../lookupTracker/classifierMembers/usages.kt | 40 ++++++++--------- .../lookupTracker/conventions/comparison.kt | 26 +++++------ .../lookupTracker/conventions/declarations.kt | 30 ++++++------- .../conventions/delegateProperty.kt | 4 +- .../conventions/mathematicalLike.kt | 28 ++++++------ .../lookupTracker/conventions/other.kt | 12 ++--- .../expressionType/inferredType.kt | 19 ++++++++ .../expressionType/lambdaParameterType.kt | 11 +++++ .../expressionType/localInnerClassType.kt | 9 ++++ .../incremental/lookupTracker/java/usages.kt | 30 ++++++------- .../lookupTracker/localDeclarations/locals.kt | 38 ++++++++-------- .../lookupTracker/packageDeclarations/foo1.kt | 14 +++--- .../syntheticProperties/KotlinClass.kt | 2 +- .../syntheticProperties/usages.kt | 44 +++++++++---------- 16 files changed, 199 insertions(+), 154 deletions(-) create mode 100644 jps/jps-plugin/testData/incremental/lookupTracker/expressionType/inferredType.kt create mode 100644 jps/jps-plugin/testData/incremental/lookupTracker/expressionType/lambdaParameterType.kt create mode 100644 jps/jps-plugin/testData/incremental/lookupTracker/expressionType/localInnerClassType.kt diff --git a/jps/jps-plugin/test/org/jetbrains/kotlin/jps/build/LookupTrackerTestGenerated.java b/jps/jps-plugin/test/org/jetbrains/kotlin/jps/build/LookupTrackerTestGenerated.java index 5109411ef0a..fa4d89c14a3 100644 --- a/jps/jps-plugin/test/org/jetbrains/kotlin/jps/build/LookupTrackerTestGenerated.java +++ b/jps/jps-plugin/test/org/jetbrains/kotlin/jps/build/LookupTrackerTestGenerated.java @@ -47,6 +47,12 @@ public class LookupTrackerTestGenerated extends AbstractLookupTrackerTest { doTest(fileName); } + @TestMetadata("expressionType") + public void testExpressionType() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("jps-plugin/testData/incremental/lookupTracker/expressionType/"); + doTest(fileName); + } + @TestMetadata("java") public void testJava() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("jps-plugin/testData/incremental/lookupTracker/java/"); diff --git a/jps/jps-plugin/testData/incremental/lookupTracker/classifierMembers/foo.kt b/jps/jps-plugin/testData/incremental/lookupTracker/classifierMembers/foo.kt index 19799784f85..6b3b664e10e 100644 --- a/jps/jps-plugin/testData/incremental/lookupTracker/classifierMembers/foo.kt +++ b/jps/jps-plugin/testData/incremental/lookupTracker/classifierMembers/foo.kt @@ -3,28 +3,28 @@ package foo import bar.* /*p:foo*/class A { - val a = 1 - var b = "" + val a = /*p:kotlin(Int)*/1 + var b = /*p:kotlin(String)*/"" val c: /*c:foo.A c:foo.A.Companion p:foo*/String - get() = /*c:foo.A*/b + get() = /*c:foo.A p:kotlin(String)*/b - var d: /*c:foo.A c:foo.A.Companion p:foo*/String = "ddd" - get() = field - set(v) { field = v } + var d: /*c:foo.A c:foo.A.Companion p:foo*/String = /*p:kotlin(String)*/"ddd" + get() = /*p:kotlin(String)*/field + set(v) { /*p:kotlin(String)*/field = /*p:kotlin(String)*/v } fun foo() { - /*c:foo.A*/a + /*c:foo.A p:kotlin(Int)*/a /*c:foo.A*/foo() - this./*c:foo.A*/a - this./*c:foo.A*/foo() + /*p:foo(A) p:kotlin(Int)*/this./*c:foo.A*/a + /*p:foo(A)*/this./*c:foo.A*/foo() /*c:foo.A c:foo.A(getBaz) c:foo.A(getBAZ) c:foo.A.Companion p:foo p:bar p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.collections p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io*/baz() - /*c:foo.A c:foo.A.Companion p:foo p:bar p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.collections p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io*/Companion./*c:foo.A.Companion*/a - /*c:foo.A c:foo.A.Companion p:foo p:bar p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.collections p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io*/O./*c:foo.A.O*/v = "OK" + /*c:foo.A c:foo.A.Companion p:foo p:bar p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.collections p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io p:kotlin(Int)*/Companion./*c:foo.A.Companion*/a + /*c:foo.A c:foo.A.Companion p:foo p:bar p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.collections p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io p:kotlin(String)*/O./*c:foo.A.O*/v = /*p:kotlin(String)*/"OK" } class B { - val a = 1 + val a = /*p:kotlin(Int)*/1 companion object CO { fun bar(a: /*c:foo.A.B.CO c:foo.A.B c:foo.A c:foo.A.Companion p:foo*/Int) {} @@ -34,12 +34,12 @@ import bar.* inner class C companion object { - val a = 1 + val a = /*p:kotlin(Int)*/1 fun baz() {} } object O { - var v = "vvv" + var v = /*p:kotlin(String)*/"vvv" } } @@ -51,20 +51,20 @@ import bar.* } /*p:foo*/object Obj : /*p:foo*/I { - override var a = 1 + override var a = /*p:kotlin(Int)*/1 override fun foo() {} - val b = 1 - fun bar(): /*c:foo.Obj p:foo*/I = null as /*c:foo.Obj p:foo*/I + val b = /*p:kotlin(Int)*/1 + fun bar(): /*c:foo.Obj p:foo*/I = /*p:kotlin(Nothing) p:foo(I)*/null as /*c:foo.Obj p:foo*/I } /*p:foo*/enum class E { X, Y; - val a = 1 + val a = /*p:kotlin(Int)*/1 fun foo() { - /*c:foo.E*/a - /*c:foo.E p:foo p:bar p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.collections p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io*/Y./*c:foo.E*/a + /*c:foo.E p:kotlin(Int)*/a + /*c:foo.E p:foo p:bar p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.collections p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io p:kotlin(Int)*/Y./*c:foo.E*/a /*c:foo.E*/foo() /*c:foo.E p:foo p:bar p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.collections p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io*/X./*c:foo.E*/foo() } diff --git a/jps/jps-plugin/testData/incremental/lookupTracker/classifierMembers/usages.kt b/jps/jps-plugin/testData/incremental/lookupTracker/classifierMembers/usages.kt index 7438fedacec..4e17f29efae 100644 --- a/jps/jps-plugin/testData/incremental/lookupTracker/classifierMembers/usages.kt +++ b/jps/jps-plugin/testData/incremental/lookupTracker/classifierMembers/usages.kt @@ -3,39 +3,39 @@ package foo import bar.* /*p:foo*/fun usages(i: /*p:foo*/I) { - /*p:foo c:foo.A.Companion(invoke) p:foo(invoke)*/A()./*c:foo.A*/a - /*p:foo c:foo.A.Companion(invoke) p:foo(invoke)*/A()./*c:foo.A*/b - /*p:foo c:foo.A.Companion(invoke) p:foo(invoke)*/A()./*c:foo.A*/c - /*p:foo c:foo.A.Companion(invoke) p:foo(invoke)*/A()./*c:foo.A*/d = "new value" + /*p:foo c:foo.A.Companion(invoke) p:foo(invoke) p:kotlin(Int)*/A()./*c:foo.A*/a + /*p:foo c:foo.A.Companion(invoke) p:foo(invoke) p:kotlin(String)*/A()./*c:foo.A*/b + /*p:foo c:foo.A.Companion(invoke) p:foo(invoke) p:kotlin(String)*/A()./*c:foo.A*/c + /*p:foo c:foo.A.Companion(invoke) p:foo(invoke) p:kotlin(String)*/A()./*c:foo.A*/d = /*p:kotlin(String)*/"new value" /*p:foo c:foo.A.Companion(invoke) p:foo(invoke)*/A()./*c:foo.A*/foo() - /*p:foo*/A./*c:foo.A c:foo.A.Companion c:foo.A.B.CO(invoke)*/B()./*c:foo.A.B*/a + /*p:foo p:kotlin(Int)*/A./*c:foo.A c:foo.A.Companion c:foo.A.B.CO(invoke)*/B()./*c:foo.A.B*/a /*p:foo*/A./*c:foo.A*/B./*c:foo.A.B c:foo.A.B.CO*/bar(1) /*p:foo*/A./*c:foo.A*/B./*c:foo.A.B*/CO./*c:foo.A.B.CO*/bar(1) - /*p:foo*/A - /*p:foo*/A./*c:foo.A c:foo.A.Companion*/a + /*p:foo c:foo.A(Companion)*/A + /*p:foo p:kotlin(Int)*/A./*c:foo.A c:foo.A.Companion*/a /*p:foo*/A./*c:foo.A c:foo.A.Companion*/baz() - /*p:foo*/A./*c:foo.A c:foo.A.Companion*/Companion + /*p:foo c:foo.A(Companion)*/A./*c:foo.A c:foo.A.Companion*/Companion /*p:foo*/A./*c:foo.A*/Companion./*c:foo.A.Companion*/baz() - /*p:foo*/A./*c:foo.A c:foo.A.Companion*/O - /*p:foo*/A./*c:foo.A*/O./*c:foo.A.O*/v = "OK" + /*p:foo c:foo.A(O)*/A./*c:foo.A c:foo.A.Companion*/O + /*p:foo p:kotlin(String)*/A./*c:foo.A*/O./*c:foo.A.O*/v = /*p:kotlin(String)*/"OK" /*p:foo*/A./*c:foo.A c:foo.A.Companion c:foo.A.Companion(getVala) c:foo.A.Companion(getVALA) p:foo p:bar p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.collections p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io*/vala /*p:foo*/A./*c:foo.A c:foo.A.Companion c:foo.A.Companion(getVara) c:foo.A.Companion(getVARA) p:foo p:bar p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.collections p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io*/vara() - i./*c:foo.I*/a = 2 - /*p:foo*/Obj./*c:foo.Obj*/a + /*p:foo(I) p:kotlin(Int)*/i./*c:foo.I*/a = /*p:kotlin(Int)*/2 + /*p:foo p:kotlin(Int)*/Obj./*c:foo.Obj*/a /*p:foo*/Obj./*c:foo.Obj*/foo() var ii: /*p:foo*/I = /*p:foo*/Obj - ii./*c:foo.I*/a - ii./*c:foo.I*/foo() - /*p:foo*/Obj./*c:foo.Obj*/b - val iii = /*p:foo*/Obj./*c:foo.Obj*/bar() - iii./*c:foo.I*/foo() + /*p:foo(I) p:kotlin(Int)*/ii./*c:foo.I*/a + /*p:foo(I)*/ii./*c:foo.I*/foo() + /*p:foo p:kotlin(Int)*/Obj./*c:foo.Obj*/b + val iii = /*p:foo p:foo(I)*/Obj./*c:foo.Obj*/bar() + /*p:foo(I)*/iii./*c:foo.I*/foo() /*p:foo p:bar p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.collections p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io*/E./*c:foo.E*/X - /*p:foo p:bar p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.collections p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io*/E./*c:foo.E*/X./*c:foo.E*/a + /*p:foo p:bar p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.collections p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io p:kotlin(Int)*/E./*c:foo.E*/X./*c:foo.E*/a /*p:foo p:bar p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.collections p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io*/E./*c:foo.E*/Y./*c:foo.E*/foo() - /*p:foo p:bar p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.collections p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io*/E./*c:foo.E*/values() - /*p:foo p:bar p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.collections p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io*/E./*c:foo.E*/valueOf("") + /*p:foo p:bar p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.collections p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io p:kotlin(Array)*/E./*c:foo.E*/values() + /*p:foo p:bar p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.collections p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io*/E./*c:foo.E*/valueOf(/*p:kotlin(String)*/"") /*p:foo p:bar p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.collections p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io*/E./*c:foo.E*/foo /*p:foo p:bar p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.collections p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io*/E./*c:foo.E*/bar() } diff --git a/jps/jps-plugin/testData/incremental/lookupTracker/conventions/comparison.kt b/jps/jps-plugin/testData/incremental/lookupTracker/conventions/comparison.kt index 33669a221f5..5eb74e65463 100644 --- a/jps/jps-plugin/testData/incremental/lookupTracker/conventions/comparison.kt +++ b/jps/jps-plugin/testData/incremental/lookupTracker/conventions/comparison.kt @@ -1,18 +1,18 @@ package foo.bar -/*p:foo.bar*/fun testComparisons(a: /*p:foo.bar*/A, b: /*p:foo.bar*/Int, c: /*p:foo.bar*/Any, na: /*p:foo.bar*/A?) { - a /*c:foo.bar.A(equals)*/== c - a /*c:foo.bar.A(equals)*/!= c - na /*c:foo.bar.A(equals)*/== a - na /*c:foo.bar.A(equals)*/== null +/*p:foo.bar*/fun testComparisons(a: /*p:foo.bar*/A, b: /*p:foo.bar*/Int, c: /*p:foo.bar*/Any, na: /*p:foo.bar*/A?) /*p:kotlin(Boolean)*/{ + /*p:foo.bar(A) p:kotlin(Boolean)*/a /*c:foo.bar.A(equals)*/== /*p:kotlin(Any)*/c + /*p:foo.bar(A) p:kotlin(Boolean)*/a /*c:foo.bar.A(equals)*/!= /*p:kotlin(Any)*/c + /*p:foo.bar(A) p:kotlin(Boolean)*/na /*c:foo.bar.A(equals)*/== /*p:foo.bar(A)*/a + /*p:foo.bar(A) p:kotlin(Boolean)*/na /*c:foo.bar.A(equals)*/== /*p:kotlin(Nothing)*/null - a /*c:foo.bar.A(compareTo)*/> b - a /*c:foo.bar.A(compareTo)*/< b - a /*c:foo.bar.A(compareTo)*/>= b - a /*c:foo.bar.A(compareTo)*/<= b + /*p:foo.bar(A) p:kotlin(Boolean)*/a /*c:foo.bar.A(compareTo)*/> /*p:kotlin(Int)*/b + /*p:foo.bar(A) p:kotlin(Boolean)*/a /*c:foo.bar.A(compareTo)*/< /*p:kotlin(Int)*/b + /*p:foo.bar(A) p:kotlin(Boolean)*/a /*c:foo.bar.A(compareTo)*/>= /*p:kotlin(Int)*/b + /*p:foo.bar(A) p:kotlin(Boolean)*/a /*c:foo.bar.A(compareTo)*/<= /*p:kotlin(Int)*/b - a /*c:foo.bar.A(compareTo) c:foo.bar.A(getCompareTo) c:foo.bar.A(getCOMPARETo) p:foo.bar(compareTo)*/> c - a /*c:foo.bar.A(compareTo) c:foo.bar.A(getCompareTo) c:foo.bar.A(getCOMPARETo) p:foo.bar(compareTo)*/< c - a /*c:foo.bar.A(compareTo) c:foo.bar.A(getCompareTo) c:foo.bar.A(getCOMPARETo) p:foo.bar(compareTo)*/>= c - a /*c:foo.bar.A(compareTo) c:foo.bar.A(getCompareTo) c:foo.bar.A(getCOMPARETo) p:foo.bar(compareTo)*/<= c + /*p:foo.bar(A) p:kotlin(Boolean)*/a /*c:foo.bar.A(compareTo) c:foo.bar.A(getCompareTo) c:foo.bar.A(getCOMPARETo) p:foo.bar(compareTo)*/> /*p:kotlin(Any)*/c + /*p:foo.bar(A) p:kotlin(Boolean)*/a /*c:foo.bar.A(compareTo) c:foo.bar.A(getCompareTo) c:foo.bar.A(getCOMPARETo) p:foo.bar(compareTo)*/< /*p:kotlin(Any)*/c + /*p:foo.bar(A) p:kotlin(Boolean)*/a /*c:foo.bar.A(compareTo) c:foo.bar.A(getCompareTo) c:foo.bar.A(getCOMPARETo) p:foo.bar(compareTo)*/>= /*p:kotlin(Any)*/c + /*p:foo.bar(A) p:kotlin(Boolean)*/a /*c:foo.bar.A(compareTo) c:foo.bar.A(getCompareTo) c:foo.bar.A(getCOMPARETo) p:foo.bar(compareTo)*/<= /*p:kotlin(Any)*/c } diff --git a/jps/jps-plugin/testData/incremental/lookupTracker/conventions/declarations.kt b/jps/jps-plugin/testData/incremental/lookupTracker/conventions/declarations.kt index 0dc0141f4f5..ef0612c5cba 100644 --- a/jps/jps-plugin/testData/incremental/lookupTracker/conventions/declarations.kt +++ b/jps/jps-plugin/testData/incremental/lookupTracker/conventions/declarations.kt @@ -1,35 +1,35 @@ package foo.bar /*p:foo.bar*/class A { - operator fun plus(a: /*c:foo.bar.A p:foo.bar*/Int) = this + operator fun plus(a: /*c:foo.bar.A p:foo.bar*/Int) = /*p:foo.bar(A)*/this operator fun timesAssign(a: /*c:foo.bar.A p:foo.bar*/Any?) {} - operator fun inc(): /*c:foo.bar.A p:foo.bar*/A = this + operator fun inc(): /*c:foo.bar.A p:foo.bar*/A = /*p:foo.bar(A)*/this - operator fun get(i: /*c:foo.bar.A p:foo.bar*/Int) = 1 - operator fun contains(a: /*c:foo.bar.A p:foo.bar*/Int): /*c:foo.bar.A p:foo.bar*/Boolean = false + operator fun get(i: /*c:foo.bar.A p:foo.bar*/Int) = /*p:kotlin(Int)*/1 + operator fun contains(a: /*c:foo.bar.A p:foo.bar*/Int): /*c:foo.bar.A p:foo.bar*/Boolean = /*p:kotlin(Boolean)*/false operator fun invoke() {} - operator fun compareTo(a: /*c:foo.bar.A p:foo.bar*/Int) = 0 + operator fun compareTo(a: /*c:foo.bar.A p:foo.bar*/Int) = /*p:kotlin(Int)*/0 - operator fun component1() = this + operator fun component1() = /*p:foo.bar(A)*/this - operator fun iterator() = this - operator fun next() = this + operator fun iterator() = /*p:foo.bar(A)*/this + operator fun next() = /*p:foo.bar(A)*/this } -/*p:foo.bar*/operator fun /*p:foo.bar*/A.minus(a: /*p:foo.bar*/Int) = this +/*p:foo.bar*/operator fun /*p:foo.bar*/A.minus(a: /*p:foo.bar*/Int) = /*p:foo.bar(A)*/this /*p:foo.bar*/operator fun /*p:foo.bar*/A.divAssign(a: /*p:foo.bar*/Any?) {} -/*p:foo.bar*/operator fun /*p:foo.bar*/A.dec(): /*p:foo.bar*/A = this +/*p:foo.bar*/operator fun /*p:foo.bar*/A.dec(): /*p:foo.bar*/A = /*p:foo.bar(A)*/this /*p:foo.bar*/operator fun /*p:foo.bar*/A.not() {} /*p:foo.bar*/operator fun /*p:foo.bar*/A.set(i: /*p:foo.bar*/Int, v: /*p:foo.bar*/Int) {} -/*p:foo.bar*/operator fun /*p:foo.bar*/A.contains(a: /*p:foo.bar*/Any): /*p:foo.bar*/Boolean = true +/*p:foo.bar*/operator fun /*p:foo.bar*/A.contains(a: /*p:foo.bar*/Any): /*p:foo.bar*/Boolean = /*p:kotlin(Boolean)*/true /*p:foo.bar*/operator fun /*p:foo.bar*/A.invoke(i: /*p:foo.bar*/Int) {} -/*p:foo.bar*/operator fun /*p:foo.bar*/A.compareTo(a: /*p:foo.bar*/Any) = 0 +/*p:foo.bar*/operator fun /*p:foo.bar*/A.compareTo(a: /*p:foo.bar*/Any) = /*p:kotlin(Int)*/0 -/*p:foo.bar*/operator fun /*p:foo.bar*/A.component2() = this +/*p:foo.bar*/operator fun /*p:foo.bar*/A.component2() = /*p:foo.bar(A)*/this -/*p:foo.bar*/operator fun /*p:foo.bar*/A?.iterator() = this!! -/*p:foo.bar*/operator fun /*p:foo.bar*/A.hasNext(): /*p:foo.bar*/Boolean = false +/*p:foo.bar*/operator fun /*p:foo.bar*/A?.iterator() = /*p:foo.bar(A)*/this!! +/*p:foo.bar*/operator fun /*p:foo.bar*/A.hasNext(): /*p:foo.bar*/Boolean = /*p:kotlin(Boolean)*/false diff --git a/jps/jps-plugin/testData/incremental/lookupTracker/conventions/delegateProperty.kt b/jps/jps-plugin/testData/incremental/lookupTracker/conventions/delegateProperty.kt index 579e0b9ec69..287914b8d64 100644 --- a/jps/jps-plugin/testData/incremental/lookupTracker/conventions/delegateProperty.kt +++ b/jps/jps-plugin/testData/incremental/lookupTracker/conventions/delegateProperty.kt @@ -3,7 +3,7 @@ package foo.bar import kotlin.reflect./*p:kotlin.reflect*/KProperty /*p:foo.bar*/class D1 { - operator fun getValue(t: /*c:foo.bar.D1 p:foo.bar*/Any?, p: /*c:foo.bar.D1*/KProperty<*>) = 1 + operator fun getValue(t: /*c:foo.bar.D1 p:foo.bar*/Any?, p: /*c:foo.bar.D1*/KProperty<*>) = /*p:kotlin(Int)*/1 } /*p:foo.bar*/operator fun /*p:foo.bar*/D1.setValue(t: /*p:foo.bar*/Any?, p: KProperty<*>, v: /*p:foo.bar*/Int) {} @@ -12,7 +12,7 @@ import kotlin.reflect./*p:kotlin.reflect*/KProperty operator fun setValue(t: /*c:foo.bar.D2 p:foo.bar*/Any?, p: /*c:foo.bar.D2*/KProperty<*>, v: /*c:foo.bar.D2 p:foo.bar*/Int) {} } -/*p:foo.bar*/operator fun /*p:foo.bar*/D2.getValue(t: /*p:foo.bar*/Any?, p: KProperty<*>) = 1 +/*p:foo.bar*/operator fun /*p:foo.bar*/D2.getValue(t: /*p:foo.bar*/Any?, p: KProperty<*>) = /*p:kotlin(Int)*/1 /*p:foo.bar*/operator fun /*p:foo.bar*/D2.propertyDelegated(p: /*p:foo.bar*/Any?) {} /*p:foo.bar*/class D3 : /*p:foo.bar*/D2() { diff --git a/jps/jps-plugin/testData/incremental/lookupTracker/conventions/mathematicalLike.kt b/jps/jps-plugin/testData/incremental/lookupTracker/conventions/mathematicalLike.kt index 486fbf26478..de63e2b99ca 100644 --- a/jps/jps-plugin/testData/incremental/lookupTracker/conventions/mathematicalLike.kt +++ b/jps/jps-plugin/testData/incremental/lookupTracker/conventions/mathematicalLike.kt @@ -1,24 +1,24 @@ package foo.bar /*p:foo.bar*/fun testOperators(a: /*p:foo.bar*/A, b: /*p:foo.bar*/Int) { - var d = a + var d = /*p:foo.bar(A)*/a - d/*c:foo.bar.A(inc)*/++ - /*c:foo.bar.A(inc)*/++d - d/*c:foo.bar.A(dec) c:foo.bar.A(getDec) c:foo.bar.A(getDEC) p:foo.bar(dec)*/-- - /*c:foo.bar.A(dec) c:foo.bar.A(getDec) c:foo.bar.A(getDEC) p:foo.bar(dec)*/--d + /*p:foo.bar(A)*/d/*c:foo.bar.A(inc)*/++ + /*c:foo.bar.A(inc) p:foo.bar(A)*/++/*p:foo.bar(A)*/d + /*p:foo.bar(A)*/d/*c:foo.bar.A(dec) c:foo.bar.A(getDec) c:foo.bar.A(getDEC) p:foo.bar(dec)*/-- + /*c:foo.bar.A(dec) c:foo.bar.A(getDec) c:foo.bar.A(getDEC) p:foo.bar(dec) p:foo.bar(A)*/--/*p:foo.bar(A)*/d - a /*c:foo.bar.A(plus)*/+ b - a /*c:foo.bar.A(minus) c:foo.bar.A(getMinus) c:foo.bar.A(getMINUS) p:foo.bar(minus)*/- b - /*c:foo.bar.A(not) c:foo.bar.A(getNot) c:foo.bar.A(getNOT) p:foo.bar(not)*/!a + /*p:foo.bar(A)*/a /*c:foo.bar.A(plus)*/+ /*p:kotlin(Int)*/b + /*p:foo.bar(A)*/a /*c:foo.bar.A(minus) c:foo.bar.A(getMinus) c:foo.bar.A(getMINUS) p:foo.bar(minus)*/- /*p:kotlin(Int)*/b + /*c:foo.bar.A(not) c:foo.bar.A(getNot) c:foo.bar.A(getNOT) p:foo.bar(not)*/!/*p:foo.bar(A)*/a // for val - a /*c:foo.bar.A(timesAssign)*/*= b - a /*c:foo.bar.A(divAssign) c:foo.bar.A(getDivAssign) c:foo.bar.A(getDIVAssign) p:foo.bar(divAssign)*//= b + /*p:foo.bar(A)*/a /*c:foo.bar.A(timesAssign)*/*= /*p:kotlin(Int)*/b + /*p:foo.bar(A)*/a /*c:foo.bar.A(divAssign) c:foo.bar.A(getDivAssign) c:foo.bar.A(getDIVAssign) p:foo.bar(divAssign)*//= /*p:kotlin(Int)*/b // for var - d /*c:foo.bar.A(plusAssign) c:foo.bar.A(getPlusAssign) c:foo.bar.A(getPLUSAssign) p:foo.bar(plusAssign) p:java.lang(plusAssign) p:kotlin(plusAssign) p:kotlin.annotation(plusAssign) p:kotlin.jvm(plusAssign) p:kotlin.collections(plusAssign) p:kotlin.ranges(plusAssign) p:kotlin.sequences(plusAssign) p:kotlin.text(plusAssign) p:kotlin.io(plusAssign) c:foo.bar.A(plus)*/+= b - d /*c:foo.bar.A(minusAssign) c:foo.bar.A(getMinusAssign) c:foo.bar.A(getMINUSAssign) p:foo.bar(minusAssign) p:java.lang(minusAssign) p:kotlin(minusAssign) p:kotlin.annotation(minusAssign) p:kotlin.jvm(minusAssign) p:kotlin.collections(minusAssign) p:kotlin.ranges(minusAssign) p:kotlin.sequences(minusAssign) p:kotlin.text(minusAssign) p:kotlin.io(minusAssign) c:foo.bar.A(minus) c:foo.bar.A(getMinus) c:foo.bar.A(getMINUS) p:foo.bar(minus)*/-= b - d /*c:foo.bar.A(timesAssign) c:foo.bar.A(times) c:foo.bar.A(getTimes) c:foo.bar.A(getTIMES) p:foo.bar(times) p:java.lang(times) p:kotlin(times) p:kotlin.annotation(times) p:kotlin.jvm(times) p:kotlin.collections(times) p:kotlin.ranges(times) p:kotlin.sequences(times) p:kotlin.text(times) p:kotlin.io(times)*/*= b - d /*c:foo.bar.A(divAssign) c:foo.bar.A(getDivAssign) c:foo.bar.A(getDIVAssign) p:foo.bar(divAssign) c:foo.bar.A(div) c:foo.bar.A(getDiv) c:foo.bar.A(getDIV) p:foo.bar(div) p:java.lang(div) p:kotlin(div) p:kotlin.annotation(div) p:kotlin.jvm(div) p:kotlin.collections(div) p:kotlin.ranges(div) p:kotlin.sequences(div) p:kotlin.text(div) p:kotlin.io(div)*//= b + /*p:foo.bar(A)*/d /*c:foo.bar.A(plusAssign) c:foo.bar.A(getPlusAssign) c:foo.bar.A(getPLUSAssign) p:foo.bar(plusAssign) p:java.lang(plusAssign) p:kotlin(plusAssign) p:kotlin.annotation(plusAssign) p:kotlin.jvm(plusAssign) p:kotlin.collections(plusAssign) p:kotlin.ranges(plusAssign) p:kotlin.sequences(plusAssign) p:kotlin.text(plusAssign) p:kotlin.io(plusAssign) c:foo.bar.A(plus)*/+= /*p:kotlin(Int)*/b + /*p:foo.bar(A)*/d /*c:foo.bar.A(minusAssign) c:foo.bar.A(getMinusAssign) c:foo.bar.A(getMINUSAssign) p:foo.bar(minusAssign) p:java.lang(minusAssign) p:kotlin(minusAssign) p:kotlin.annotation(minusAssign) p:kotlin.jvm(minusAssign) p:kotlin.collections(minusAssign) p:kotlin.ranges(minusAssign) p:kotlin.sequences(minusAssign) p:kotlin.text(minusAssign) p:kotlin.io(minusAssign) c:foo.bar.A(minus) c:foo.bar.A(getMinus) c:foo.bar.A(getMINUS) p:foo.bar(minus)*/-= /*p:kotlin(Int)*/b + /*p:foo.bar(A)*/d /*c:foo.bar.A(timesAssign) c:foo.bar.A(times) c:foo.bar.A(getTimes) c:foo.bar.A(getTIMES) p:foo.bar(times) p:java.lang(times) p:kotlin(times) p:kotlin.annotation(times) p:kotlin.jvm(times) p:kotlin.collections(times) p:kotlin.ranges(times) p:kotlin.sequences(times) p:kotlin.text(times) p:kotlin.io(times)*/*= /*p:kotlin(Int)*/b + /*p:foo.bar(A)*/d /*c:foo.bar.A(divAssign) c:foo.bar.A(getDivAssign) c:foo.bar.A(getDIVAssign) p:foo.bar(divAssign) c:foo.bar.A(div) c:foo.bar.A(getDiv) c:foo.bar.A(getDIV) p:foo.bar(div) p:java.lang(div) p:kotlin(div) p:kotlin.annotation(div) p:kotlin.jvm(div) p:kotlin.collections(div) p:kotlin.ranges(div) p:kotlin.sequences(div) p:kotlin.text(div) p:kotlin.io(div)*//= /*p:kotlin(Int)*/b } diff --git a/jps/jps-plugin/testData/incremental/lookupTracker/conventions/other.kt b/jps/jps-plugin/testData/incremental/lookupTracker/conventions/other.kt index 5bb64a7dc33..bf27ef791d0 100644 --- a/jps/jps-plugin/testData/incremental/lookupTracker/conventions/other.kt +++ b/jps/jps-plugin/testData/incremental/lookupTracker/conventions/other.kt @@ -1,16 +1,16 @@ package foo.bar /*p:foo.bar*/fun testOther(a: /*p:foo.bar*/A, b: /*p:foo.bar*/Int, c: /*p:foo.bar*/Any, na: /*p:foo.bar*/A?) { - /*c:foo.bar.A(set) c:foo.bar.A(getSet) c:foo.bar.A(getSET) p:foo.bar(set)*/a[1] = /*c:foo.bar.A(get)*/a[2] + /*p:foo.bar(A) c:foo.bar.A(set) c:foo.bar.A(getSet) c:foo.bar.A(getSET) p:foo.bar(set)*/a[1] = /*p:foo.bar(A) c:foo.bar.A(get) p:kotlin(Int)*/a[2] - b /*c:foo.bar.A(contains)*/in a - "s" /*c:foo.bar.A(contains) c:foo.bar.A(getContains) c:foo.bar.A(getCONTAINS) p:foo.bar(contains)*/!in a + /*p:kotlin(Int) p:kotlin(Boolean)*/b /*c:foo.bar.A(contains)*/in /*p:foo.bar(A)*/a + /*p:kotlin(String) p:kotlin(Boolean)*/"s" /*c:foo.bar.A(contains) c:foo.bar.A(getContains) c:foo.bar.A(getCONTAINS) p:foo.bar(contains)*/!in /*p:foo.bar(A)*/a /*c:foo.bar.A(invoke)*/a() /*c:foo.bar.A(invoke) p:foo.bar p:foo.bar(invoke)*/a(1) - val (/*c:foo.bar.A(component1)*/h, /*c:foo.bar.A(component2) c:foo.bar.A(getComponent2) p:foo.bar(component2)*/t) = a; + val (/*c:foo.bar.A(component1)*/h, /*c:foo.bar.A(component2) c:foo.bar.A(getComponent2) p:foo.bar(component2)*/t) = /*p:foo.bar(A)*/a; - for ((/*c:foo.bar.A(component1)*/f, /*c:foo.bar.A(component2) c:foo.bar.A(getComponent2) p:foo.bar(component2)*/s) in /*c:foo.bar.A(iterator) c:foo.bar.A(hasNext) c:foo.bar.A(getHasNext) c:foo.bar.A(getHASNext) p:foo.bar(hasNext) c:foo.bar.A(next)*/a); - for ((/*c:foo.bar.A(component1)*/f, /*c:foo.bar.A(component2) c:foo.bar.A(getComponent2) p:foo.bar(component2)*/s) in /*c:foo.bar.A(iterator) c:foo.bar.A(getIterator) c:foo.bar.A(getITERATOR) p:foo.bar(iterator) c:foo.bar.A(hasNext) c:foo.bar.A(getHasNext) c:foo.bar.A(getHASNext) p:foo.bar(hasNext) c:foo.bar.A(next)*/na); + for ((/*c:foo.bar.A(component1)*/f, /*c:foo.bar.A(component2) c:foo.bar.A(getComponent2) p:foo.bar(component2)*/s) in /*p:foo.bar(A) c:foo.bar.A(iterator) c:foo.bar.A(hasNext) c:foo.bar.A(getHasNext) c:foo.bar.A(getHASNext) p:foo.bar(hasNext) c:foo.bar.A(next)*/a); + for ((/*c:foo.bar.A(component1)*/f, /*c:foo.bar.A(component2) c:foo.bar.A(getComponent2) p:foo.bar(component2)*/s) in /*p:foo.bar(A) c:foo.bar.A(iterator) c:foo.bar.A(getIterator) c:foo.bar.A(getITERATOR) p:foo.bar(iterator) c:foo.bar.A(hasNext) c:foo.bar.A(getHasNext) c:foo.bar.A(getHASNext) p:foo.bar(hasNext) c:foo.bar.A(next)*/na); } diff --git a/jps/jps-plugin/testData/incremental/lookupTracker/expressionType/inferredType.kt b/jps/jps-plugin/testData/incremental/lookupTracker/expressionType/inferredType.kt new file mode 100644 index 00000000000..fb15d1dc4f4 --- /dev/null +++ b/jps/jps-plugin/testData/incremental/lookupTracker/expressionType/inferredType.kt @@ -0,0 +1,19 @@ +package foo + +/*p:foo(A)*/open class A +/*p:foo*/class B : /*p:foo*/A() + +/*p:foo*/fun getA() = /*p:foo*/A() +/*p:foo*/fun getB() = /*p:foo*/B() + +/*p:foo*/fun getListOfA() = /*p:foo p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.collections p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io p:kotlin.collections(List) p:foo(A)*/listOf(/*p:foo*/A()) +/*p:foo*/fun getListOfB() = /*p:foo p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.collections p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io p:kotlin.collections(List) p:foo(B)*/listOf(/*p:foo*/B()) + +/*p:foo*/fun useListOfA(a: /*p:foo*/List) {} +/*p:foo*/fun useListOfB(b: /*p:foo*/List) {} + +/*p:foo*/fun testInferredType() { + /*p:foo*/useListOfA(/*p:foo p:kotlin.collections(List) p:foo(A)*/getListOfA()) + /*p:foo*/useListOfA(/*p:foo p:kotlin.collections(List) p:foo(B)*/getListOfB()) + /*p:foo*/useListOfB(/*p:foo p:kotlin.collections(List) p:foo(B)*/getListOfB()) +} diff --git a/jps/jps-plugin/testData/incremental/lookupTracker/expressionType/lambdaParameterType.kt b/jps/jps-plugin/testData/incremental/lookupTracker/expressionType/lambdaParameterType.kt new file mode 100644 index 00000000000..736fba6ade3 --- /dev/null +++ b/jps/jps-plugin/testData/incremental/lookupTracker/expressionType/lambdaParameterType.kt @@ -0,0 +1,11 @@ +package foo + +/*p:foo*/class C + +/*p:foo*/fun lambdaConsumer(fn: (/*p:foo*/A)->/*p:foo*/Unit) {} +/*p:foo*/fun extensionConsumer(fn: /*p:foo*/A.()->/*p:foo*/Unit) {} + +/*p:foo*/fun testLambdaParameterType() { + /*p:foo*/lambdaConsumer /*p:kotlin(Function1) p:foo(A)*/{ /*p:foo(A)*/it } + /*p:foo*/extensionConsumer /*p:kotlin(Function1) p:foo(A)*/{ /*p:foo(A)*/this } +} \ No newline at end of file diff --git a/jps/jps-plugin/testData/incremental/lookupTracker/expressionType/localInnerClassType.kt b/jps/jps-plugin/testData/incremental/lookupTracker/expressionType/localInnerClassType.kt new file mode 100644 index 00000000000..c9e10d74f07 --- /dev/null +++ b/jps/jps-plugin/testData/incremental/lookupTracker/expressionType/localInnerClassType.kt @@ -0,0 +1,9 @@ +package foo + +/*p:foo*/fun bar() { + class A { + inner class B + } + + val b = A().B() +} \ No newline at end of file diff --git a/jps/jps-plugin/testData/incremental/lookupTracker/java/usages.kt b/jps/jps-plugin/testData/incremental/lookupTracker/java/usages.kt index 604e17d850d..b9495b2c69a 100644 --- a/jps/jps-plugin/testData/incremental/lookupTracker/java/usages.kt +++ b/jps/jps-plugin/testData/incremental/lookupTracker/java/usages.kt @@ -4,33 +4,33 @@ import bar./*p:bar*/C import baz.* /*p:foo*/fun usages() { - val c = C() + val c = /*p:bar*/C() - c./*c:bar.C*/field - c./*c:bar.C*/field = 2 - c./*c:bar.C*/func() - c./*c:bar.C*/B() + /*p:bar(C) p:kotlin(Int)*/c./*c:bar.C*/field + /*p:bar(C) p:kotlin(Int)*/c./*c:bar.C*/field = /*p:kotlin(Int)*/2 + /*p:bar(C)*/c./*c:bar.C*/func() + /*p:bar(C) c:bar.C(B)*/c./*c:bar.C*/B() - /*p:foo p:baz p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.collections p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io*/C./*c:bar.C*/sfield - /*p:foo p:baz p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.collections p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io*/C./*c:bar.C*/sfield = "new" + /*p:foo p:baz p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.collections p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io p:kotlin(String)*/C./*c:bar.C*/sfield + /*p:foo p:baz p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.collections p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io p:kotlin(String)*/C./*c:bar.C*/sfield = /*p:kotlin(String)*/"new" /*p:foo p:baz p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.collections p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io*/C./*c:bar.C*/sfunc() - /*p:foo p:baz p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.collections p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io*/C./*c:bar.C*/S() + /*p:foo p:baz p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.collections p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io c:bar.C(S)*/C./*c:bar.C*/S() // inherited from I - c./*c:bar.C*/ifunc() - /*p:foo p:baz p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.collections p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io*/C./*c:bar.C*/isfield + /*p:bar(C)*/c./*c:bar.C*/ifunc() + /*p:foo p:baz p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.collections p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io p:kotlin(String)*/C./*c:bar.C*/isfield // expected error: Unresolved reference: IS /*p:foo p:baz p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.collections p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io*/C./*c:bar.C*/IS() - val i: /*p:foo*/I = c - i./*c:foo.I*/ifunc() + val i: /*p:foo*/I = /*p:bar(C)*/c + /*p:foo(I)*/i./*c:foo.I*/ifunc() - /*p:foo p:baz p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.collections p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io*/I./*c:foo.I*/isfield - /*p:foo p:baz p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.collections p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io*/I./*c:foo.I*/IS() + /*p:foo p:baz p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.collections p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io p:kotlin(String)*/I./*c:foo.I*/isfield + /*p:foo p:baz p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.collections p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io c:foo.I(IS)*/I./*c:foo.I*/IS() /*p:foo p:baz p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.collections p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io*/E./*c:baz.E*/F - /*p:foo p:baz p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.collections p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io*/E./*c:baz.E*/F./*c:baz.E*/field + /*p:foo p:baz p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.collections p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io p:kotlin(Int)*/E./*c:baz.E*/F./*c:baz.E*/field /*p:foo p:baz p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.collections p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io*/E./*c:baz.E*/S./*c:baz.E*/func() } diff --git a/jps/jps-plugin/testData/incremental/lookupTracker/localDeclarations/locals.kt b/jps/jps-plugin/testData/incremental/lookupTracker/localDeclarations/locals.kt index 8ae9ed1928f..8dc43de85c1 100644 --- a/jps/jps-plugin/testData/incremental/lookupTracker/localDeclarations/locals.kt +++ b/jps/jps-plugin/testData/incremental/lookupTracker/localDeclarations/locals.kt @@ -2,13 +2,13 @@ package local.declarations import bar.* -/*p:local.declarations*/fun f(p: /*p:local.declarations*/Any) { - p.toString() +/*p:local.declarations*/fun f(p: /*p:local.declarations*/Any) /*p:kotlin(Int)*/{ + /*p:kotlin(Any) p:kotlin(String)*/p.toString() - val a = 1 - val b = a - fun localFun() = b - fun /*p:local.declarations*/Int.localExtFun() = localFun() + val a = /*p:kotlin(Int)*/1 + val b = /*p:kotlin(Int)*/a + fun localFun() = /*p:kotlin(Int)*/b + fun /*p:local.declarations*/Int.localExtFun() = /*p:kotlin(Int)*/localFun() abstract class LocalI { abstract var a: /*p:local.declarations*/Int @@ -16,34 +16,34 @@ import bar.* } class LocalC : LocalI() { - override var a = 1 + override var a = /*p:kotlin(Int)*/1 override fun foo() {} - var b = "bbb" + var b = /*p:kotlin(String)*/"bbb" - fun bar() = b + fun bar() = /*p:kotlin(Int)*/b } val o = object { - val a = "aaa" - fun foo(): LocalI = null as LocalI + val a = /*p:kotlin(String)*/"aaa" + fun foo(): LocalI = /*p:kotlin(Nothing)*/null as LocalI } - localFun() - 1./*c:kotlin.Int(getLocalExtFun) c:kotlin.Int(getLOCALExtFun)*/localExtFun() + /*p:kotlin(Int)*/localFun() + /*p:kotlin(Int)*/1./*c:kotlin.Int(getLocalExtFun) c:kotlin.Int(getLOCALExtFun)*/localExtFun() val c = LocalC() - c.a - c.b + /*p:kotlin(Int)*/c.a + /*p:kotlin(String)*/c.b c.foo() - c.bar() + /*p:kotlin(Int)*/c.bar() val i: LocalI = c - i.a + /*p:kotlin(Int)*/i.a i.foo() - o.a + /*p:kotlin(String)*/o.a val ii = o.foo() - ii.a + /*p:kotlin(Int)*/ii.a } diff --git a/jps/jps-plugin/testData/incremental/lookupTracker/packageDeclarations/foo1.kt b/jps/jps-plugin/testData/incremental/lookupTracker/packageDeclarations/foo1.kt index 3b7575c7e00..ce3b7606f8f 100644 --- a/jps/jps-plugin/testData/incremental/lookupTracker/packageDeclarations/foo1.kt +++ b/jps/jps-plugin/testData/incremental/lookupTracker/packageDeclarations/foo1.kt @@ -4,14 +4,14 @@ import bar.* import baz./*p:baz*/C /*p:foo*/val a = /*p:foo p:bar*/A() -/*p:foo*/var b: /*p:foo p:bar p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.collections p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io*/baz./*p:baz*/B = /*p:foo p:bar p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.collections p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io*/baz./*p:baz*/B() +/*p:foo*/var b: /*p:foo p:bar p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.collections p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io*/baz./*p:baz*/B = /*p:foo p:bar p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.collections p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io p:baz(B)*/baz./*p:baz*/B() -/*p:foo*/fun function(p: /*p:foo p:bar*/B): /*p:foo p:bar*/B { - /*p:foo*/a - return /*p:foo p:bar*/B() +/*p:foo*/fun function(p: /*p:foo p:bar*/B): /*p:foo p:bar*/B /*p:kotlin(Nothing)*/{ + /*p:foo p:bar(A)*/a + /*p:kotlin(Nothing)*/return /*p:foo p:bar*/B() } -/*p:foo*/fun /*p:foo*/MyClass.extFunc(p: /**p:foo p:bar*//*p:foo*/Array, e: /*p:foo*/MyEnum, c: /**???*/C): /*p:foo*/MyInterface { - /*c:foo.MyClass c:foo.MyClass(getB) p:foo p:bar p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.collections p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io*/b - return /*c:foo.MyClass p:foo p:bar p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.collections p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io*/MyClass() +/*p:foo*/fun /*p:foo*/MyClass.extFunc(p: /**p:foo p:bar*//*p:foo*/Array, e: /*p:foo*/MyEnum, c: /**???*/C): /*p:foo*/MyInterface /*p:kotlin(Nothing)*/{ + /*c:foo.MyClass c:foo.MyClass(getB) p:foo p:bar p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.collections p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io p:baz(B)*/b + /*p:kotlin(Nothing)*/return /*c:foo.MyClass p:foo p:bar p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.collections p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io*/MyClass() } diff --git a/jps/jps-plugin/testData/incremental/lookupTracker/syntheticProperties/KotlinClass.kt b/jps/jps-plugin/testData/incremental/lookupTracker/syntheticProperties/KotlinClass.kt index abc2cb3f81d..75b360dbbb9 100644 --- a/jps/jps-plugin/testData/incremental/lookupTracker/syntheticProperties/KotlinClass.kt +++ b/jps/jps-plugin/testData/incremental/lookupTracker/syntheticProperties/KotlinClass.kt @@ -3,6 +3,6 @@ package foo import /*p:*/JavaClass /*p:foo*/class KotlinClass : JavaClass() { - override fun getFoo() = 2 + override fun getFoo() = /*p:kotlin(Int)*/2 fun setFoo(i: /*c:foo.KotlinClass c:JavaClass p:foo*/Int) {} } diff --git a/jps/jps-plugin/testData/incremental/lookupTracker/syntheticProperties/usages.kt b/jps/jps-plugin/testData/incremental/lookupTracker/syntheticProperties/usages.kt index 34e7367eea7..49a068b5e1c 100644 --- a/jps/jps-plugin/testData/incremental/lookupTracker/syntheticProperties/usages.kt +++ b/jps/jps-plugin/testData/incremental/lookupTracker/syntheticProperties/usages.kt @@ -4,27 +4,27 @@ import /*p:*/JavaClass import foo./*p:foo*/KotlinClass /*p:foo.bar*/fun test() { - val j = JavaClass() - val k = KotlinClass() + val j = /*p:*/JavaClass() + val k = /*p:foo*/KotlinClass() - j./*c:JavaClass*/getFoo() - j./*c:JavaClass c:JavaClass(getSetFoo) c:JavaClass(getSETFoo) p:foo.bar p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.collections p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io*/setFoo(2) - j./*c:JavaClass c:JavaClass(getFoo) c:JavaClass(getFOO) c:JavaClass(setFoo)*/foo = 2 - j./*c:JavaClass c:JavaClass(getFoo) c:JavaClass(getFOO) c:JavaClass(setFoo)*/foo - j./*c:JavaClass c:JavaClass(getBar) c:JavaClass(getBAR) c:JavaClass(setBar)*/bar - j./*c:JavaClass c:JavaClass(getBar) c:JavaClass(getBAR) c:JavaClass(setBar)*/bar = "" - j./*c:JavaClass c:JavaClass(getBazBaz) c:JavaClass(getBAZBaz) p:foo.bar p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.collections p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io*/bazBaz - j./*c:JavaClass c:JavaClass(getBazBaz) c:JavaClass(getBAZBaz) p:foo.bar p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.collections p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io*/bazBaz = "" - j./*c:JavaClass*/setBoo(2) - j./*c:JavaClass c:JavaClass(getBoo) c:JavaClass(getBOO) p:foo.bar p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.collections p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io*/boo = 2 - k./*c:foo.KotlinClass c:JavaClass*/getFoo() // getFoo may be an inner class in JavaClass - k./*c:foo.KotlinClass c:JavaClass*/setFoo(2) - k./*c:foo.KotlinClass c:foo.KotlinClass(getFoo) c:foo.KotlinClass(getFOO) c:foo.KotlinClass(setFoo)*/foo = 2 - k./*c:foo.KotlinClass c:foo.KotlinClass(getFoo) c:foo.KotlinClass(getFOO) c:foo.KotlinClass(setFoo)*/foo - k./*c:foo.KotlinClass c:foo.KotlinClass(getBar) c:foo.KotlinClass(getBAR) c:foo.KotlinClass(setBar)*/bar - k./*c:foo.KotlinClass c:foo.KotlinClass(getBar) c:foo.KotlinClass(getBAR) c:foo.KotlinClass(setBar)*/bar = "" - k./*c:foo.KotlinClass c:foo.KotlinClass(getBazBaz) c:foo.KotlinClass(getBAZBaz) p:foo.bar p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.collections p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io c:JavaClass*/bazBaz - k./*c:foo.KotlinClass c:foo.KotlinClass(getBazBaz) c:foo.KotlinClass(getBAZBaz) p:foo.bar p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.collections p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io c:JavaClass*/bazBaz = "" - k./*c:foo.KotlinClass c:JavaClass*/setBoo(2) - k./*c:foo.KotlinClass c:foo.KotlinClass(getBoo) c:foo.KotlinClass(getBOO) p:foo.bar p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.collections p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io c:JavaClass*/boo = 2 + /*p:(JavaClass) p:kotlin(Int)*/j./*c:JavaClass*/getFoo() + /*p:(JavaClass)*/j./*c:JavaClass c:JavaClass(getSetFoo) c:JavaClass(getSETFoo) p:foo.bar p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.collections p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io*/setFoo(2) + /*p:(JavaClass) p:kotlin(Int)*/j./*c:JavaClass c:JavaClass(getFoo) c:JavaClass(getFOO) c:JavaClass(setFoo)*/foo = /*p:kotlin(Int)*/2 + /*p:(JavaClass) p:kotlin(Int)*/j./*c:JavaClass c:JavaClass(getFoo) c:JavaClass(getFOO) c:JavaClass(setFoo)*/foo + /*p:(JavaClass) p:kotlin(String)*/j./*c:JavaClass c:JavaClass(getBar) c:JavaClass(getBAR) c:JavaClass(setBar)*/bar + /*p:(JavaClass) p:kotlin(String)*/j./*c:JavaClass c:JavaClass(getBar) c:JavaClass(getBAR) c:JavaClass(setBar)*/bar = /*p:kotlin(String)*/"" + /*p:(JavaClass)*/j./*c:JavaClass c:JavaClass(getBazBaz) c:JavaClass(getBAZBaz) p:foo.bar p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.collections p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io*/bazBaz + /*p:(JavaClass)*/j./*c:JavaClass c:JavaClass(getBazBaz) c:JavaClass(getBAZBaz) p:foo.bar p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.collections p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io*/bazBaz = /*p:kotlin(String)*/"" + /*p:(JavaClass)*/j./*c:JavaClass*/setBoo(2) + /*p:(JavaClass)*/j./*c:JavaClass c:JavaClass(getBoo) c:JavaClass(getBOO) p:foo.bar p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.collections p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io*/boo = /*p:kotlin(Int)*/2 + /*p:foo(KotlinClass) p:kotlin(Int)*/k./*c:foo.KotlinClass c:JavaClass*/getFoo() // getFoo may be an inner class in JavaClass + /*p:foo(KotlinClass)*/k./*c:foo.KotlinClass c:JavaClass*/setFoo(2) + /*p:foo(KotlinClass) p:kotlin(Int)*/k./*c:foo.KotlinClass c:foo.KotlinClass(getFoo) c:foo.KotlinClass(getFOO) c:foo.KotlinClass(setFoo)*/foo = /*p:kotlin(Int)*/2 + /*p:foo(KotlinClass) p:kotlin(Int)*/k./*c:foo.KotlinClass c:foo.KotlinClass(getFoo) c:foo.KotlinClass(getFOO) c:foo.KotlinClass(setFoo)*/foo + /*p:foo(KotlinClass) p:kotlin(String)*/k./*c:foo.KotlinClass c:foo.KotlinClass(getBar) c:foo.KotlinClass(getBAR) c:foo.KotlinClass(setBar)*/bar + /*p:foo(KotlinClass) p:kotlin(String)*/k./*c:foo.KotlinClass c:foo.KotlinClass(getBar) c:foo.KotlinClass(getBAR) c:foo.KotlinClass(setBar)*/bar = /*p:kotlin(String)*/"" + /*p:foo(KotlinClass)*/k./*c:foo.KotlinClass c:foo.KotlinClass(getBazBaz) c:foo.KotlinClass(getBAZBaz) p:foo.bar p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.collections p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io c:JavaClass*/bazBaz + /*p:foo(KotlinClass)*/k./*c:foo.KotlinClass c:foo.KotlinClass(getBazBaz) c:foo.KotlinClass(getBAZBaz) p:foo.bar p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.collections p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io c:JavaClass*/bazBaz = /*p:kotlin(String)*/"" + /*p:foo(KotlinClass)*/k./*c:foo.KotlinClass c:JavaClass*/setBoo(2) + /*p:foo(KotlinClass)*/k./*c:foo.KotlinClass c:foo.KotlinClass(getBoo) c:foo.KotlinClass(getBOO) p:foo.bar p:java.lang p:kotlin p:kotlin.annotation p:kotlin.jvm p:kotlin.collections p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io c:JavaClass*/boo = /*p:kotlin(Int)*/2 }