K2 IC: filter out builtins lookups

Do not record lookups to kotlin builtins, since it is considered
useless.

Related to #KT-66417
This commit is contained in:
Ilya Chernikov
2024-02-23 14:13:34 +01:00
committed by Space Team
parent 5b62558798
commit 684d0b8690
27 changed files with 226 additions and 223 deletions
@@ -9,6 +9,7 @@ import org.jetbrains.kotlin.KtSourceElement
import org.jetbrains.kotlin.fir.resolve.calls.AbstractCallInfo
import org.jetbrains.kotlin.fir.types.*
import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.name.StandardClassIds
import org.jetbrains.kotlin.utils.SmartList
abstract class FirLookupTrackerComponent : FirSessionComponent {
@@ -48,7 +49,7 @@ fun FirLookupTrackerComponent.recordTypeResolveAsLookup(type: ConeKotlinType?, s
if (source == null && fileSource == null) return // TODO: investigate all cases
if (type is ConeErrorType) return // TODO: investigate whether some cases should be recorded, e.g. unresolved
type.classId?.let {
if (!it.isLocal) {
if (!it.isLocal && it !in StandardClassIds.allBuiltinTypes) {
if (it.shortClassName.asString() != "Companion") {
recordLookup(it.shortClassName, it.packageFqName.asString(), source, fileSource)
} else {
@@ -243,6 +243,8 @@ object StandardClassIds {
val mutableCollectionToBaseCollection: Map<ClassId, ClassId> =
baseCollectionToMutableEquivalent.entries.associateBy({ it.value }) { it.key }
}
val allBuiltinTypes = primitiveTypes + unsignedTypes + this.String + this.Unit + this.Any + this.Enum
}
private fun String.baseId() = ClassId(StandardClassIds.BASE_KOTLIN_PACKAGE, Name.identifier(this))
@@ -7,20 +7,20 @@ import bar.*
var b = ""
val c: /*p:bar p:foo*/String
get() = /*p:foo.A p:kotlin(String)*/b
get() = /*p:foo.A*/b
var d: /*p:bar p:foo*/String = "ddd"
get() = field
set(v) { field = v }
fun foo() {
/*p:foo.A p:kotlin(Int)*/a
/*p:foo.A p:kotlin(Unit)*/foo()
/*p:foo.A(a) p:kotlin(Int)*/this.a
/*p:foo.A(foo) p:kotlin(Unit)*/this.foo()
/*p:bar p:foo p:foo.A p:foo.A.Companion p:kotlin(Unit)*/baz()
/*p:bar p:foo p:foo.A p:foo.A(a) p:foo.A.Companion p:foo.A.Companion(a) p:kotlin(Int)*/Companion.a
/*p:bar p:foo p:foo.A p:foo.A.Companion p:foo.A.O(v) p:kotlin(String)*/O.v = "OK"
/*p:foo.A*/a
/*p:foo.A*/foo()
/*p:foo.A(a)*/this.a
/*p:foo.A(foo)*/this.foo()
/*p:bar p:foo p:foo.A p:foo.A.Companion*/baz()
/*p:bar p:foo p:foo.A p:foo.A(a) p:foo.A.Companion p:foo.A.Companion(a)*/Companion.a
/*p:bar p:foo p:foo.A p:foo.A.Companion p:foo.A.O(v)*/O.v = "OK"
}
class B {
@@ -63,9 +63,9 @@ import bar.*
val a = 1
fun foo() {
/*p:foo.E p:kotlin(Int)*/a
/*p:bar p:foo p:foo.E p:foo.E(a) p:kotlin(Int) p:kotlin.Enum p:kotlin.Enum.Companion*/Y.a
/*p:foo.E p:kotlin(Unit)*/foo()
/*p:bar p:foo p:foo.E p:foo.E(foo) p:kotlin(Unit) p:kotlin.Enum p:kotlin.Enum.Companion*/X.foo()
/*p:foo.E*/a
/*p:bar p:foo p:foo.E p:foo.E(a) p:kotlin.Enum p:kotlin.Enum.Companion*/Y.a
/*p:foo.E*/foo()
/*p:bar p:foo p:foo.E p:foo.E(foo) p:kotlin.Enum p:kotlin.Enum.Companion*/X.foo()
}
}
@@ -3,35 +3,35 @@ package foo
import bar.*
/*p:foo*/fun usages(i: /*p:bar p:foo*/I) {
/*p:foo p:foo.A(a) p:kotlin(Int)*/A().a
/*p:foo p:foo.A(b) p:kotlin(String)*/A().b
/*p:foo p:foo.A(c) p:kotlin(String)*/A().c
/*p:foo p:foo.A(d) p:kotlin(String)*/A().d = "new value"
/*p:foo p:foo.A(foo) p:kotlin(Unit)*/A().foo()
/*p:foo p:foo(B) p:foo.A.B(a) p:kotlin(Int)*/A.B().a
/*p:bar(bar) p:foo p:foo(bar) p:foo.A.B.CO(bar) p:kotlin(Unit)*/A.B.bar(1)
/*p:bar(bar) p:foo p:foo(bar) p:foo.A.B.CO(bar) p:kotlin(Unit)*/A.B.CO.bar(1)
/*p:foo p:foo.A(a)*/A().a
/*p:foo p:foo.A(b)*/A().b
/*p:foo p:foo.A(c)*/A().c
/*p:foo p:foo.A(d)*/A().d = "new value"
/*p:foo p:foo.A(foo)*/A().foo()
/*p:foo p:foo(B) p:foo.A.B(a)*/A.B().a
/*p:bar(bar) p:foo p:foo(bar) p:foo.A.B.CO(bar)*/A.B.bar(1)
/*p:bar(bar) p:foo p:foo(bar) p:foo.A.B.CO(bar)*/A.B.CO.bar(1)
/*p:foo*/A
/*p:foo p:foo.A(a) p:foo.A.Companion(a) p:kotlin(Int)*/A.a
/*p:bar(baz) p:foo p:foo(baz) p:foo.A(baz) p:foo.A.Companion(baz) p:kotlin(Unit)*/A.baz()
/*p:foo p:foo.A(a) p:foo.A.Companion(a)*/A.a
/*p:bar(baz) p:foo p:foo(baz) p:foo.A(baz) p:foo.A.Companion(baz)*/A.baz()
/*p:foo*/A.Companion
/*p:bar(baz) p:foo p:foo(baz) p:foo.A(baz) p:foo.A.Companion(baz) p:kotlin(Unit)*/A.Companion.baz()
/*p:bar(baz) p:foo p:foo(baz) p:foo.A(baz) p:foo.A.Companion(baz)*/A.Companion.baz()
/*p:foo*/A.O
/*p:foo p:foo.A.O(v) p:kotlin(String)*/A.O.v = "OK"
/*p:foo p:foo.A.O(v)*/A.O.v = "OK"
/*p:foo.I(a) p:kotlin(Int)*/i.a = 2
/*p:foo p:foo.Obj(a) p:kotlin(Int)*/Obj.a
/*p:bar(foo) p:foo p:foo(foo) p:foo.Obj(foo) p:kotlin(Unit)*/Obj.foo()
/*p:foo.I(a)*/i.a = 2
/*p:foo p:foo.Obj(a)*/Obj.a
/*p:bar(foo) p:foo p:foo(foo) p:foo.Obj(foo)*/Obj.foo()
var ii: /*p:bar p:foo*/I = /*p:foo*/Obj
/*p:foo.I(a) p:kotlin(Int)*/ii.a
/*p:foo.I(foo) p:kotlin(Unit)*/ii.foo()
/*p:foo p:foo.Obj(b) p:kotlin(Int)*/Obj.b
/*p:foo.I(a)*/ii.a
/*p:foo.I(foo)*/ii.foo()
/*p:foo p:foo.Obj(b)*/Obj.b
val iii = /*p:bar(bar) p:foo p:foo(I) p:foo(bar) p:foo.Obj(bar)*/Obj.bar()
/*p:foo.I(foo) p:kotlin(Unit)*/iii.foo()
/*p:foo.I(foo)*/iii.foo()
/*p:bar p:foo*/E.X
/*p:bar p:foo p:foo.E(a) p:kotlin(Int)*/E.X.a
/*p:bar p:foo p:foo.E(foo) p:kotlin(Unit)*/E.Y.foo()
/*p:bar p:foo p:foo.E(a)*/E.X.a
/*p:bar p:foo p:foo.E(foo)*/E.Y.foo()
/*p:bar p:foo p:kotlin(Array)*/E.values()
/*p:bar p:foo*/E.valueOf("")
}
@@ -3,37 +3,37 @@ package foo
import bar.*
/*p:foo*/fun usages(i: /*p:bar p:foo*/I) {
/*p:foo p:foo.A(a) p:kotlin(Int)*/A().a
/*p:foo p:foo.A(b) p:kotlin(String)*/A().b
/*p:foo p:foo.A(c) p:kotlin(String)*/A().c
/*p:foo p:foo.A(d) p:kotlin(String)*/A().d = "new value"
/*p:foo p:foo.A(foo) p:kotlin(Unit)*/A().foo()
/*p:foo p:foo(B) p:foo.A.B(a) p:kotlin(Int)*/A.B().a
/*p:bar(bar) p:foo p:foo(bar) p:foo.A.B.CO(bar) p:kotlin(Unit)*/A.B.bar(1)
/*p:bar(bar) p:foo p:foo(bar) p:foo.A.B.CO(bar) p:kotlin(Unit)*/A.B.CO.bar(1)
/*p:foo p:foo.A(a)*/A().a
/*p:foo p:foo.A(b)*/A().b
/*p:foo p:foo.A(c)*/A().c
/*p:foo p:foo.A(d)*/A().d = "new value"
/*p:foo p:foo.A(foo)*/A().foo()
/*p:foo p:foo(B) p:foo.A.B(a)*/A.B().a
/*p:bar(bar) p:foo p:foo(bar) p:foo.A.B.CO(bar)*/A.B.bar(1)
/*p:bar(bar) p:foo p:foo(bar) p:foo.A.B.CO(bar)*/A.B.CO.bar(1)
/*p:foo*/A
/*p:foo p:foo.A(a) p:foo.A.Companion(a) p:kotlin(Int)*/A.a
/*p:bar(baz) p:foo p:foo(baz) p:foo.A(baz) p:foo.A.Companion(baz) p:kotlin(Unit)*/A.baz()
/*p:foo p:foo.A(a) p:foo.A.Companion(a)*/A.a
/*p:bar(baz) p:foo p:foo(baz) p:foo.A(baz) p:foo.A.Companion(baz)*/A.baz()
/*p:foo*/A.Companion
/*p:bar(baz) p:foo p:foo(baz) p:foo.A(baz) p:foo.A.Companion(baz) p:kotlin(Unit)*/A.Companion.baz()
/*p:bar(baz) p:foo p:foo(baz) p:foo.A(baz) p:foo.A.Companion(baz)*/A.Companion.baz()
/*p:foo*/A.O
/*p:foo p:foo.A.O(v) p:kotlin(String)*/A.O.v = "OK"
/*p:foo p:foo.A.O(v)*/A.O.v = "OK"
/*p:bar(vala) p:foo p:foo(vala) p:foo.A(vala) p:foo.A.Companion(vala)*/A.vala
/*p:bar(vara) p:foo p:foo(vara) p:foo.A(vara) p:foo.A.Companion(vara)*/A.vara()
/*p:foo.I(a) p:kotlin(Int)*/i.a = 2
/*p:foo p:foo.Obj(a) p:kotlin(Int)*/Obj.a
/*p:bar(foo) p:foo p:foo(foo) p:foo.Obj(foo) p:kotlin(Unit)*/Obj.foo()
/*p:foo.I(a)*/i.a = 2
/*p:foo p:foo.Obj(a)*/Obj.a
/*p:bar(foo) p:foo p:foo(foo) p:foo.Obj(foo)*/Obj.foo()
var ii: /*p:bar p:foo*/I = /*p:foo*/Obj
/*p:foo.I(a) p:kotlin(Int)*/ii.a
/*p:foo.I(foo) p:kotlin(Unit)*/ii.foo()
/*p:foo p:foo.Obj(b) p:kotlin(Int)*/Obj.b
/*p:foo.I(a)*/ii.a
/*p:foo.I(foo)*/ii.foo()
/*p:foo p:foo.Obj(b)*/Obj.b
val iii = /*p:bar(bar) p:foo p:foo(I) p:foo(bar) p:foo.Obj(bar)*/Obj.bar()
/*p:foo.I(foo) p:kotlin(Unit)*/iii.foo()
/*p:foo.I(foo)*/iii.foo()
/*p:bar p:foo*/E.X
/*p:bar p:foo p:foo.E(a) p:kotlin(Int)*/E.X.a
/*p:bar p:foo p:foo.E(foo) p:kotlin(Unit)*/E.Y.foo()
/*p:bar p:foo p:foo.E(a)*/E.X.a
/*p:bar p:foo p:foo.E(foo)*/E.Y.foo()
/*p:bar p:foo p:kotlin(Array)*/E.values()
/*p:bar p:foo*/E.valueOf("")
/*p:bar p:bar(foo) p:foo p:foo(foo)*/E.foo
@@ -6,13 +6,13 @@ package foo.bar
na == a
na == null
/*p:foo.bar.A(compareTo) p:kotlin(Int)*/a > b
/*p:foo.bar.A(compareTo) p:kotlin(Int)*/a < b
/*p:foo.bar.A(compareTo) p:kotlin(Int)*/a >= b
/*p:foo.bar.A(compareTo) p:kotlin(Int)*/a <= b
/*p:foo.bar.A(compareTo)*/a > b
/*p:foo.bar.A(compareTo)*/a < b
/*p:foo.bar.A(compareTo)*/a >= b
/*p:foo.bar.A(compareTo)*/a <= b
/*p:foo.bar(compareTo) p:foo.bar.A(compareTo) p:kotlin(Int)*/a > c
/*p:foo.bar(compareTo) p:foo.bar.A(compareTo) p:kotlin(Int)*/a < c
/*p:foo.bar(compareTo) p:foo.bar.A(compareTo) p:kotlin(Int)*/a >= c
/*p:foo.bar(compareTo) p:foo.bar.A(compareTo) p:kotlin(Int)*/a <= c
/*p:foo.bar(compareTo) p:foo.bar.A(compareTo)*/a > c
/*p:foo.bar(compareTo) p:foo.bar.A(compareTo)*/a < c
/*p:foo.bar(compareTo) p:foo.bar.A(compareTo)*/a >= c
/*p:foo.bar(compareTo) p:foo.bar.A(compareTo)*/a <= c
}
@@ -20,11 +20,11 @@ package foo.bar
}
/*p:foo.bar*/val x1 by /*p:foo.bar p:foo.bar(D2) p:foo.bar(provideDelegate) p:foo.bar.D1(getValue) p:foo.bar.D1(provideDelegate) p:kotlin(Int) p:kotlin.reflect p:kotlin.reflect(KProperty0) p:kotlin.reflect(provideDelegate)*/D1()
/*p:foo.bar*/var y1 by /*p:foo.bar p:foo.bar(D2) p:foo.bar(provideDelegate) p:foo.bar(setValue) p:foo.bar.D1(getValue) p:foo.bar.D1(provideDelegate) p:foo.bar.D1(setValue) p:kotlin(Int) p:kotlin(Unit) p:kotlin.reflect p:kotlin.reflect(KMutableProperty0) p:kotlin.reflect(provideDelegate) p:kotlin.reflect(setValue)*/D1()
/*p:foo.bar*/val x1 by /*p:foo.bar p:foo.bar(D2) p:foo.bar(provideDelegate) p:foo.bar.D1(getValue) p:foo.bar.D1(provideDelegate) p:kotlin.reflect p:kotlin.reflect(KProperty0) p:kotlin.reflect(provideDelegate)*/D1()
/*p:foo.bar*/var y1 by /*p:foo.bar p:foo.bar(D2) p:foo.bar(provideDelegate) p:foo.bar(setValue) p:foo.bar.D1(getValue) p:foo.bar.D1(provideDelegate) p:foo.bar.D1(setValue) p:kotlin.reflect p:kotlin.reflect(KMutableProperty0) p:kotlin.reflect(provideDelegate) p:kotlin.reflect(setValue)*/D1()
/*p:foo.bar*/val x2 by /*p:foo.bar p:foo.bar(getValue) p:foo.bar(provideDelegate) p:foo.bar.D2(getValue) p:foo.bar.D2(provideDelegate) p:kotlin(Int) p:kotlin.reflect p:kotlin.reflect(KProperty0) p:kotlin.reflect(getValue) p:kotlin.reflect(provideDelegate)*/D2()
/*p:foo.bar*/var y2 by /*p:foo.bar p:foo.bar(getValue) p:foo.bar(provideDelegate) p:foo.bar.D2(getValue) p:foo.bar.D2(provideDelegate) p:foo.bar.D2(setValue) p:kotlin(Int) p:kotlin(Unit) p:kotlin.reflect p:kotlin.reflect(KMutableProperty0) p:kotlin.reflect(getValue) p:kotlin.reflect(provideDelegate)*/D2()
/*p:foo.bar*/val x2 by /*p:foo.bar p:foo.bar(getValue) p:foo.bar(provideDelegate) p:foo.bar.D2(getValue) p:foo.bar.D2(provideDelegate) p:kotlin.reflect p:kotlin.reflect(KProperty0) p:kotlin.reflect(getValue) p:kotlin.reflect(provideDelegate)*/D2()
/*p:foo.bar*/var y2 by /*p:foo.bar p:foo.bar(getValue) p:foo.bar(provideDelegate) p:foo.bar.D2(getValue) p:foo.bar.D2(provideDelegate) p:foo.bar.D2(setValue) p:kotlin.reflect p:kotlin.reflect(KMutableProperty0) p:kotlin.reflect(getValue) p:kotlin.reflect(provideDelegate)*/D2()
/*p:foo.bar*/val x3 by /*p:foo.bar p:foo.bar(getValue) p:foo.bar.D3(getValue) p:foo.bar.D3(provideDelegate) p:kotlin(Int) p:kotlin.reflect p:kotlin.reflect(KProperty0) p:kotlin.reflect(getValue)*/D3()
/*p:foo.bar*/var y3 by /*p:foo.bar p:foo.bar(getValue) p:foo.bar.D2(setValue) p:foo.bar.D3(getValue) p:foo.bar.D3(provideDelegate) p:foo.bar.D3(setValue) p:kotlin(Int) p:kotlin(Unit) p:kotlin.reflect p:kotlin.reflect(KMutableProperty0) p:kotlin.reflect(getValue)*/D3()
/*p:foo.bar*/val x3 by /*p:foo.bar p:foo.bar(getValue) p:foo.bar.D3(getValue) p:foo.bar.D3(provideDelegate) p:kotlin.reflect p:kotlin.reflect(KProperty0) p:kotlin.reflect(getValue)*/D3()
/*p:foo.bar*/var y3 by /*p:foo.bar p:foo.bar(getValue) p:foo.bar.D2(setValue) p:foo.bar.D3(getValue) p:foo.bar.D3(provideDelegate) p:foo.bar.D3(setValue) p:kotlin.reflect p:kotlin.reflect(KMutableProperty0) p:kotlin.reflect(getValue)*/D3()
@@ -10,15 +10,15 @@ package foo.bar
/*p:foo.bar(A) p:foo.bar.A(plus)*/a + b
/*p:foo.bar(A) p:foo.bar(minus) p:foo.bar.A(minus)*/a - b
/*p:foo.bar(not) p:foo.bar.A(not) p:kotlin(Unit)*/!a
/*p:foo.bar(not) p:foo.bar.A(not)*/!a
// for val
/*p:foo.bar(times) p:foo.bar.A(times) p:foo.bar.A(timesAssign) p:kotlin(Unit)*/a *= b
/*p:foo.bar(div) p:foo.bar(divAssign) p:foo.bar.A(div) p:foo.bar.A(divAssign) p:kotlin(Unit)*/a /= b
/*p:foo.bar(times) p:foo.bar.A(times) p:foo.bar.A(timesAssign)*/a *= b
/*p:foo.bar(div) p:foo.bar(divAssign) p:foo.bar.A(div) p:foo.bar.A(divAssign)*/a /= b
// for var
/*p:foo.bar(A) p:foo.bar(plusAssign) p:foo.bar.A(plus) p:foo.bar.A(plusAssign)*/d += b
/*p:foo.bar(A) p:foo.bar(minus) p:foo.bar(minusAssign) p:foo.bar.A(minus) p:foo.bar.A(minusAssign)*/d -= b
/*p:foo.bar(times) p:foo.bar.A(times) p:foo.bar.A(timesAssign) p:kotlin(Unit)*/d *= b
/*p:foo.bar(div) p:foo.bar(divAssign) p:foo.bar.A(div) p:foo.bar.A(divAssign) p:kotlin(Unit)*/d /= b
/*p:foo.bar(times) p:foo.bar.A(times) p:foo.bar.A(timesAssign)*/d *= b
/*p:foo.bar(div) p:foo.bar(divAssign) p:foo.bar.A(div) p:foo.bar.A(divAssign)*/d /= b
}
@@ -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?) {
/*p:foo.bar(set) p:foo.bar.A(set) p:kotlin(Unit)*/a[1] = /*p:foo.bar.A(get) p:kotlin(Int)*/a[2]
/*p:foo.bar(set) p:foo.bar.A(set)*/a[1] = /*p:foo.bar.A(get)*/a[2]
/*p:foo.bar.A(contains) p:kotlin(Boolean)*/b in a
/*p:foo.bar(contains) p:foo.bar.A(contains) p:kotlin(Boolean) p:kotlin.Boolean(not)*/"s" !in a
/*p:foo.bar.A(contains)*/b in a
/*p:foo.bar(contains) p:foo.bar.A(contains) p:kotlin.Boolean(not)*/"s" !in a
/*p:foo.bar(A) p:foo.bar.A(invoke) p:kotlin(Unit)*/a()
/*p:foo.bar p:foo.bar(A) p:foo.bar(invoke) p:foo.bar.A(invoke) p:kotlin(Unit)*/a(1)
/*p:foo.bar(A) p:foo.bar.A(invoke)*/a()
/*p:foo.bar p:foo.bar(A) p:foo.bar(invoke) p:foo.bar.A(invoke)*/a(1)
val (/*p:foo.bar(A) p:foo.bar.A(component1)*/h, /*p:foo.bar(A) p:foo.bar(component2) p:foo.bar.A(component2)*/t) = a;
for ((/*p:foo.bar(A) p:foo.bar.A(component1)*/f, /*p:foo.bar(A) p:foo.bar(component2) p:foo.bar.A(component2)*/s) in /*p:foo.bar(A) p:foo.bar(hasNext) p:foo.bar.A(hasNext) p:foo.bar.A(iterator) p:foo.bar.A(next) p:kotlin(Boolean)*/a);
for ((/*p:foo.bar(A) p:foo.bar.A(component1)*/f, /*p:foo.bar(A) p:foo.bar(component2) p:foo.bar.A(component2)*/s) in /*p:foo.bar(A) p:foo.bar(hasNext) p:foo.bar(iterator) p:foo.bar.A(hasNext) p:foo.bar.A(iterator) p:foo.bar.A(next) p:foo.bar.A?(iterator) p:kotlin(Boolean)*/na);
for ((/*p:foo.bar(A) p:foo.bar.A(component1)*/f, /*p:foo.bar(A) p:foo.bar(component2) p:foo.bar.A(component2)*/s) in /*p:foo.bar(A) p:foo.bar(hasNext) p:foo.bar.A(hasNext) p:foo.bar.A(iterator) p:foo.bar.A(next)*/a);
for ((/*p:foo.bar(A) p:foo.bar.A(component1)*/f, /*p:foo.bar(A) p:foo.bar(component2) p:foo.bar.A(component2)*/s) in /*p:foo.bar(A) p:foo.bar(hasNext) p:foo.bar(iterator) p:foo.bar.A(hasNext) p:foo.bar.A(iterator) p:foo.bar.A(next) p:foo.bar.A?(iterator)*/na);
}
@@ -13,7 +13,7 @@ package foo
/*p:foo*/fun useListOfB(b: /*p:foo*/List</*p:foo*/B>) {}
/*p:foo*/fun testInferredType() {
/*p:foo p:kotlin(Unit)*/useListOfA(/*p:foo p:foo(A) p:kotlin.collections(List)*/getListOfA())
/*p:foo p:kotlin(Unit)*/useListOfA(/*p:foo p:foo(B) p:kotlin.collections(List)*/getListOfB())
/*p:foo p:kotlin(Unit)*/useListOfB(/*p:foo p:foo(B) p:kotlin.collections(List)*/getListOfB())
/*p:foo*/useListOfA(/*p:foo p:foo(A) p:kotlin.collections(List)*/getListOfA())
/*p:foo*/useListOfA(/*p:foo p:foo(B) p:kotlin.collections(List)*/getListOfB())
/*p:foo*/useListOfB(/*p:foo p:foo(B) p:kotlin.collections(List)*/getListOfB())
}
@@ -6,6 +6,6 @@ package foo
/*p:foo*/fun extensionConsumer(fn: /*p:foo*/A.()->/*p:foo*/Unit) {}
/*p:foo*/fun testLambdaParameterType() {
/*p:foo p:kotlin(Unit)*/lambdaConsumer /*p:foo(A) p:kotlin(Function1) p:kotlin(Unit)*/{ /*p:kotlin(Unit)*/it }
/*p:foo p:kotlin(Unit)*/extensionConsumer /*p:foo(A) p:kotlin(Function1) p:kotlin(Unit)*/{ /*p:kotlin(Unit)*/this }
/*p:foo*/lambdaConsumer /*p:foo(A) p:kotlin(Function1)*/{ it }
/*p:foo*/extensionConsumer /*p:foo(A) p:kotlin(Function1)*/{ this }
}
@@ -3,12 +3,12 @@ package local.declarations
import bar.*
/*p:local.declarations*/fun f(p: /*p:bar p:local.declarations*/Any) {
/*p:kotlin(String) p:kotlin.Any(toString)*/p.toString()
/*p:kotlin.Any(toString)*/p.toString()
val a = 1
val b = a
fun localFun() = b
fun /*p:bar p:local.declarations*/Int.localExtFun() = /*p:kotlin(Int)*/localFun()
fun /*p:bar p:local.declarations*/Int.localExtFun() = localFun()
abstract class LocalI {
abstract var a: /*p:bar p:local.declarations*/Int
@@ -30,20 +30,20 @@ import bar.*
fun foo(): /*p:bar p:local.declarations*/LocalI = null as /*p:bar p:local.declarations*/LocalI
}
/*p:kotlin(Int)*/localFun()
/*p:IOT(localExtFun) p:kotlin(Int)*/1.localExtFun()
localFun()
/*p:IOT(localExtFun)*/1.localExtFun()
val c = LocalC()
/*p:kotlin(Int)*/c.a
/*p:kotlin(String)*/c.b
/*p:kotlin(Unit)*/c.foo()
/*p:kotlin(Int)*/c.bar()
c.a
c.b
c.foo()
c.bar()
val i: /*p:bar p:local.declarations*/LocalI = c
/*p:kotlin(Int)*/i.a
/*p:kotlin(Unit)*/i.foo()
i.a
i.foo()
/*p:kotlin(String)*/o.a
o.a
val ii = o.foo()
/*p:kotlin(Int)*/ii.a
ii.a
}
@@ -3,12 +3,12 @@ package foo
/*p:bar(SAMInterface)*/import bar.SAMInterface
/*p:foo*/fun foo(c: /*p:bar p:foo*/C) {
/*p:bar(foo) p:bar.C(foo) p:foo(foo) p:kotlin(Unit)*/c.foo()
/*p:bar(SAMInterface) p:bar.C(foo) p:bar/SAMInterface(<SAM-CONSTRUCTOR>) p:kotlin(Unit)*/c.foo /*p:kotlin(Function1) p:kotlin(Unit)*/{ /*p:kotlin(Unit)*/}
/*p:bar(foo) p:bar.C(foo) p:foo(foo)*/c.foo()
/*p:bar(SAMInterface) p:bar.C(foo) p:bar/SAMInterface(<SAM-CONSTRUCTOR>)*/c.foo /*p:kotlin(Function1)*/{ }
/*p:bar p:bar(bar) p:foo p:foo(bar) p:kotlin(Unit)*/C.bar()
/*p:bar p:bar(SAMInterface) p:bar/SAMInterface(<SAM-CONSTRUCTOR>) p:foo p:kotlin(Unit)*/C.bar /*p:kotlin(Function1) p:kotlin(Unit)*/{/*p:kotlin(Unit)*/}
/*p:bar p:bar(bar) p:foo p:foo(bar)*/C.bar()
/*p:bar p:bar(SAMInterface) p:bar/SAMInterface(<SAM-CONSTRUCTOR>) p:foo*/C.bar /*p:kotlin(Function1)*/{}
/*p:bar p:foo*/SAMInterface()
/*p:bar*/SAMInterface /*p:kotlin(Function1) p:kotlin(Unit)*/{/*p:kotlin(Unit)*/}
/*p:bar*/SAMInterface /*p:kotlin(Function1)*/{}
}
@@ -7,20 +7,20 @@ import bar.*
var b = ""
val c: /*p:bar p:foo*/String
get() = /*p:foo.A p:kotlin(String)*/b
get() = /*p:foo.A*/b
var d: /*p:bar p:foo*/String = "ddd"
get() = field
set(v) { field = v }
fun foo() {
/*p:foo.A p:kotlin(Int)*/a
/*p:foo.A p:kotlin(Unit)*/foo()
/*p:foo.A(a) p:kotlin(Int)*/this.a
/*p:foo.A(foo) p:kotlin(Unit)*/this.foo()
/*p:bar p:foo p:foo.A p:foo.A.Companion p:kotlin(Unit)*/baz()
/*p:bar p:foo p:foo.A p:foo.A(a) p:foo.A.Companion p:foo.A.Companion(a) p:kotlin(Int)*/Companion.a
/*p:bar p:foo p:foo.A p:foo.A.Companion p:foo.A.O(v) p:kotlin(String)*/O.v = "OK"
/*p:foo.A*/a
/*p:foo.A*/foo()
/*p:foo.A(a)*/this.a
/*p:foo.A(foo)*/this.foo()
/*p:bar p:foo p:foo.A p:foo.A.Companion*/baz()
/*p:bar p:foo p:foo.A p:foo.A(a) p:foo.A.Companion p:foo.A.Companion(a)*/Companion.a
/*p:bar p:foo p:foo.A p:foo.A.Companion p:foo.A.O(v)*/O.v = "OK"
}
class B {
@@ -63,9 +63,9 @@ import bar.*
val a = 1
fun foo() {
/*p:foo.E p:kotlin(Int)*/a
/*p:bar p:foo p:foo.E p:foo.E(a) p:kotlin(Int) p:kotlin.Enum p:kotlin.Enum.Companion*/Y.a
/*p:foo.E p:kotlin(Unit)*/foo()
/*p:bar p:foo p:foo.E p:foo.E(foo) p:kotlin(Unit) p:kotlin.Enum p:kotlin.Enum.Companion*/X.foo()
/*p:foo.E*/a
/*p:bar p:foo p:foo.E p:foo.E(a) p:kotlin.Enum p:kotlin.Enum.Companion*/Y.a
/*p:foo.E*/foo()
/*p:bar p:foo p:foo.E p:foo.E(foo) p:kotlin.Enum p:kotlin.Enum.Companion*/X.foo()
}
}
@@ -3,35 +3,35 @@ package foo
import bar.*
/*p:foo*/fun usages(i: /*p:bar p:foo*/I) {
/*p:foo p:foo.A(a) p:kotlin(Int)*/A().a
/*p:foo p:foo.A(b) p:kotlin(String)*/A().b
/*p:foo p:foo.A(c) p:kotlin(String)*/A().c
/*p:foo p:foo.A(d) p:kotlin(String)*/A().d = "new value"
/*p:foo p:foo.A(foo) p:kotlin(Unit)*/A().foo()
/*p:foo p:foo(B) p:foo.A.B(a) p:kotlin(Int)*/A.B().a
/*p:bar(bar) p:foo p:foo(bar) p:foo.A.B.CO(bar) p:kotlin(Unit)*/A.B.bar(1)
/*p:bar(bar) p:foo p:foo(bar) p:foo.A.B.CO(bar) p:kotlin(Unit)*/A.B.CO.bar(1)
/*p:foo p:foo.A(a)*/A().a
/*p:foo p:foo.A(b)*/A().b
/*p:foo p:foo.A(c)*/A().c
/*p:foo p:foo.A(d)*/A().d = "new value"
/*p:foo p:foo.A(foo)*/A().foo()
/*p:foo p:foo(B) p:foo.A.B(a)*/A.B().a
/*p:bar(bar) p:foo p:foo(bar) p:foo.A.B.CO(bar)*/A.B.bar(1)
/*p:bar(bar) p:foo p:foo(bar) p:foo.A.B.CO(bar)*/A.B.CO.bar(1)
/*p:foo*/A
/*p:foo p:foo.A(a) p:foo.A.Companion(a) p:kotlin(Int)*/A.a
/*p:bar(baz) p:foo p:foo(baz) p:foo.A(baz) p:foo.A.Companion(baz) p:kotlin(Unit)*/A.baz()
/*p:foo p:foo.A(a) p:foo.A.Companion(a)*/A.a
/*p:bar(baz) p:foo p:foo(baz) p:foo.A(baz) p:foo.A.Companion(baz)*/A.baz()
/*p:foo*/A.Companion
/*p:bar(baz) p:foo p:foo(baz) p:foo.A(baz) p:foo.A.Companion(baz) p:kotlin(Unit)*/A.Companion.baz()
/*p:bar(baz) p:foo p:foo(baz) p:foo.A(baz) p:foo.A.Companion(baz)*/A.Companion.baz()
/*p:foo*/A.O
/*p:foo p:foo.A.O(v) p:kotlin(String)*/A.O.v = "OK"
/*p:foo p:foo.A.O(v)*/A.O.v = "OK"
/*p:foo.I(a) p:kotlin(Int)*/i.a = 2
/*p:foo p:foo.Obj(a) p:kotlin(Int)*/Obj.a
/*p:bar(foo) p:foo p:foo(foo) p:foo.Obj(foo) p:kotlin(Unit)*/Obj.foo()
/*p:foo.I(a)*/i.a = 2
/*p:foo p:foo.Obj(a)*/Obj.a
/*p:bar(foo) p:foo p:foo(foo) p:foo.Obj(foo)*/Obj.foo()
var ii: /*p:bar p:foo*/I = /*p:foo*/Obj
/*p:foo.I(a) p:kotlin(Int)*/ii.a
/*p:foo.I(foo) p:kotlin(Unit)*/ii.foo()
/*p:foo p:foo.Obj(b) p:kotlin(Int)*/Obj.b
/*p:foo.I(a)*/ii.a
/*p:foo.I(foo)*/ii.foo()
/*p:foo p:foo.Obj(b)*/Obj.b
val iii = /*p:bar(bar) p:foo p:foo(I) p:foo(bar) p:foo.Obj(bar)*/Obj.bar()
/*p:foo.I(foo) p:kotlin(Unit)*/iii.foo()
/*p:foo.I(foo)*/iii.foo()
/*p:bar p:foo*/E.X
/*p:bar p:foo p:foo.E(a) p:kotlin(Int)*/E.X.a
/*p:bar p:foo p:foo.E(foo) p:kotlin(Unit)*/E.Y.foo()
/*p:bar p:foo p:foo.E(a)*/E.X.a
/*p:bar p:foo p:foo.E(foo)*/E.Y.foo()
/*p:bar p:foo p:kotlin(Array)*/E.values()
/*p:bar p:foo*/E.valueOf("")
}
@@ -3,37 +3,37 @@ package foo
import bar.*
/*p:foo*/fun usages(i: /*p:bar p:foo*/I) {
/*p:foo p:foo.A(a) p:kotlin(Int)*/A().a
/*p:foo p:foo.A(b) p:kotlin(String)*/A().b
/*p:foo p:foo.A(c) p:kotlin(String)*/A().c
/*p:foo p:foo.A(d) p:kotlin(String)*/A().d = "new value"
/*p:foo p:foo.A(foo) p:kotlin(Unit)*/A().foo()
/*p:foo p:foo(B) p:foo.A.B(a) p:kotlin(Int)*/A.B().a
/*p:bar(bar) p:foo p:foo(bar) p:foo.A.B.CO(bar) p:kotlin(Unit)*/A.B.bar(1)
/*p:bar(bar) p:foo p:foo(bar) p:foo.A.B.CO(bar) p:kotlin(Unit)*/A.B.CO.bar(1)
/*p:foo p:foo.A(a)*/A().a
/*p:foo p:foo.A(b)*/A().b
/*p:foo p:foo.A(c)*/A().c
/*p:foo p:foo.A(d)*/A().d = "new value"
/*p:foo p:foo.A(foo)*/A().foo()
/*p:foo p:foo(B) p:foo.A.B(a)*/A.B().a
/*p:bar(bar) p:foo p:foo(bar) p:foo.A.B.CO(bar)*/A.B.bar(1)
/*p:bar(bar) p:foo p:foo(bar) p:foo.A.B.CO(bar)*/A.B.CO.bar(1)
/*p:foo*/A
/*p:foo p:foo.A(a) p:foo.A.Companion(a) p:kotlin(Int)*/A.a
/*p:bar(baz) p:foo p:foo(baz) p:foo.A(baz) p:foo.A.Companion(baz) p:kotlin(Unit)*/A.baz()
/*p:foo p:foo.A(a) p:foo.A.Companion(a)*/A.a
/*p:bar(baz) p:foo p:foo(baz) p:foo.A(baz) p:foo.A.Companion(baz)*/A.baz()
/*p:foo*/A.Companion
/*p:bar(baz) p:foo p:foo(baz) p:foo.A(baz) p:foo.A.Companion(baz) p:kotlin(Unit)*/A.Companion.baz()
/*p:bar(baz) p:foo p:foo(baz) p:foo.A(baz) p:foo.A.Companion(baz)*/A.Companion.baz()
/*p:foo*/A.O
/*p:foo p:foo.A.O(v) p:kotlin(String)*/A.O.v = "OK"
/*p:foo p:foo.A.O(v)*/A.O.v = "OK"
/*p:bar(vala) p:foo p:foo(vala) p:foo.A(vala) p:foo.A.Companion(vala)*/A.vala
/*p:bar(vara) p:foo p:foo(vara) p:foo.A(vara) p:foo.A.Companion(vara)*/A.vara()
/*p:foo.I(a) p:kotlin(Int)*/i.a = 2
/*p:foo p:foo.Obj(a) p:kotlin(Int)*/Obj.a
/*p:bar(foo) p:foo p:foo(foo) p:foo.Obj(foo) p:kotlin(Unit)*/Obj.foo()
/*p:foo.I(a)*/i.a = 2
/*p:foo p:foo.Obj(a)*/Obj.a
/*p:bar(foo) p:foo p:foo(foo) p:foo.Obj(foo)*/Obj.foo()
var ii: /*p:bar p:foo*/I = /*p:foo*/Obj
/*p:foo.I(a) p:kotlin(Int)*/ii.a
/*p:foo.I(foo) p:kotlin(Unit)*/ii.foo()
/*p:foo p:foo.Obj(b) p:kotlin(Int)*/Obj.b
/*p:foo.I(a)*/ii.a
/*p:foo.I(foo)*/ii.foo()
/*p:foo p:foo.Obj(b)*/Obj.b
val iii = /*p:bar(bar) p:foo p:foo(I) p:foo(bar) p:foo.Obj(bar)*/Obj.bar()
/*p:foo.I(foo) p:kotlin(Unit)*/iii.foo()
/*p:foo.I(foo)*/iii.foo()
/*p:bar p:foo*/E.X
/*p:bar p:foo p:foo.E(a) p:kotlin(Int)*/E.X.a
/*p:bar p:foo p:foo.E(foo) p:kotlin(Unit)*/E.Y.foo()
/*p:bar p:foo p:foo.E(a)*/E.X.a
/*p:bar p:foo p:foo.E(foo)*/E.Y.foo()
/*p:bar p:foo p:kotlin(Array)*/E.values()
/*p:bar p:foo*/E.valueOf("")
/*p:bar p:bar(foo) p:foo p:foo(foo)*/E.foo
@@ -6,13 +6,13 @@ package foo.bar
na == a
na == null
/*p:foo.bar.A(compareTo) p:kotlin(Int)*/a > b
/*p:foo.bar.A(compareTo) p:kotlin(Int)*/a < b
/*p:foo.bar.A(compareTo) p:kotlin(Int)*/a >= b
/*p:foo.bar.A(compareTo) p:kotlin(Int)*/a <= b
/*p:foo.bar.A(compareTo)*/a > b
/*p:foo.bar.A(compareTo)*/a < b
/*p:foo.bar.A(compareTo)*/a >= b
/*p:foo.bar.A(compareTo)*/a <= b
/*p:foo.bar(compareTo) p:foo.bar.A(compareTo) p:kotlin(Int)*/a > c
/*p:foo.bar(compareTo) p:foo.bar.A(compareTo) p:kotlin(Int)*/a < c
/*p:foo.bar(compareTo) p:foo.bar.A(compareTo) p:kotlin(Int)*/a >= c
/*p:foo.bar(compareTo) p:foo.bar.A(compareTo) p:kotlin(Int)*/a <= c
/*p:foo.bar(compareTo) p:foo.bar.A(compareTo)*/a > c
/*p:foo.bar(compareTo) p:foo.bar.A(compareTo)*/a < c
/*p:foo.bar(compareTo) p:foo.bar.A(compareTo)*/a >= c
/*p:foo.bar(compareTo) p:foo.bar.A(compareTo)*/a <= c
}
@@ -20,11 +20,11 @@ package foo.bar
}
/*p:foo.bar*/val x1 by /*p:foo.bar p:foo.bar(D2) p:foo.bar(provideDelegate) p:foo.bar.D1(getValue) p:foo.bar.D1(provideDelegate) p:kotlin(Int) p:kotlin.reflect p:kotlin.reflect(KProperty0) p:kotlin.reflect(provideDelegate)*/D1()
/*p:foo.bar*/var y1 by /*p:foo.bar p:foo.bar(D2) p:foo.bar(provideDelegate) p:foo.bar(setValue) p:foo.bar.D1(getValue) p:foo.bar.D1(provideDelegate) p:foo.bar.D1(setValue) p:kotlin(Int) p:kotlin(Unit) p:kotlin.reflect p:kotlin.reflect(KMutableProperty0) p:kotlin.reflect(provideDelegate) p:kotlin.reflect(setValue)*/D1()
/*p:foo.bar*/val x1 by /*p:foo.bar p:foo.bar(D2) p:foo.bar(provideDelegate) p:foo.bar.D1(getValue) p:foo.bar.D1(provideDelegate) p:kotlin.reflect p:kotlin.reflect(KProperty0) p:kotlin.reflect(provideDelegate)*/D1()
/*p:foo.bar*/var y1 by /*p:foo.bar p:foo.bar(D2) p:foo.bar(provideDelegate) p:foo.bar(setValue) p:foo.bar.D1(getValue) p:foo.bar.D1(provideDelegate) p:foo.bar.D1(setValue) p:kotlin.reflect p:kotlin.reflect(KMutableProperty0) p:kotlin.reflect(provideDelegate) p:kotlin.reflect(setValue)*/D1()
/*p:foo.bar*/val x2 by /*p:foo.bar p:foo.bar(getValue) p:foo.bar(provideDelegate) p:foo.bar.D2(getValue) p:foo.bar.D2(provideDelegate) p:kotlin(Int) p:kotlin.reflect p:kotlin.reflect(KProperty0) p:kotlin.reflect(getValue) p:kotlin.reflect(provideDelegate)*/D2()
/*p:foo.bar*/var y2 by /*p:foo.bar p:foo.bar(getValue) p:foo.bar(provideDelegate) p:foo.bar.D2(getValue) p:foo.bar.D2(provideDelegate) p:foo.bar.D2(setValue) p:kotlin(Int) p:kotlin(Unit) p:kotlin.reflect p:kotlin.reflect(KMutableProperty0) p:kotlin.reflect(getValue) p:kotlin.reflect(provideDelegate)*/D2()
/*p:foo.bar*/val x2 by /*p:foo.bar p:foo.bar(getValue) p:foo.bar(provideDelegate) p:foo.bar.D2(getValue) p:foo.bar.D2(provideDelegate) p:kotlin.reflect p:kotlin.reflect(KProperty0) p:kotlin.reflect(getValue) p:kotlin.reflect(provideDelegate)*/D2()
/*p:foo.bar*/var y2 by /*p:foo.bar p:foo.bar(getValue) p:foo.bar(provideDelegate) p:foo.bar.D2(getValue) p:foo.bar.D2(provideDelegate) p:foo.bar.D2(setValue) p:kotlin.reflect p:kotlin.reflect(KMutableProperty0) p:kotlin.reflect(getValue) p:kotlin.reflect(provideDelegate)*/D2()
/*p:foo.bar*/val x3 by /*p:foo.bar p:foo.bar(getValue) p:foo.bar.D3(getValue) p:foo.bar.D3(provideDelegate) p:kotlin(Int) p:kotlin.reflect p:kotlin.reflect(KProperty0) p:kotlin.reflect(getValue)*/D3()
/*p:foo.bar*/var y3 by /*p:foo.bar p:foo.bar(getValue) p:foo.bar.D2(setValue) p:foo.bar.D3(getValue) p:foo.bar.D3(provideDelegate) p:foo.bar.D3(setValue) p:kotlin(Int) p:kotlin(Unit) p:kotlin.reflect p:kotlin.reflect(KMutableProperty0) p:kotlin.reflect(getValue)*/D3()
/*p:foo.bar*/val x3 by /*p:foo.bar p:foo.bar(getValue) p:foo.bar.D3(getValue) p:foo.bar.D3(provideDelegate) p:kotlin.reflect p:kotlin.reflect(KProperty0) p:kotlin.reflect(getValue)*/D3()
/*p:foo.bar*/var y3 by /*p:foo.bar p:foo.bar(getValue) p:foo.bar.D2(setValue) p:foo.bar.D3(getValue) p:foo.bar.D3(provideDelegate) p:foo.bar.D3(setValue) p:kotlin.reflect p:kotlin.reflect(KMutableProperty0) p:kotlin.reflect(getValue)*/D3()
@@ -10,15 +10,15 @@ package foo.bar
/*p:foo.bar(A) p:foo.bar.A(plus)*/a + b
/*p:foo.bar(A) p:foo.bar(minus) p:foo.bar.A(minus)*/a - b
/*p:foo.bar(not) p:foo.bar.A(not) p:kotlin(Unit)*/!a
/*p:foo.bar(not) p:foo.bar.A(not)*/!a
// for val
/*p:foo.bar(times) p:foo.bar.A(times) p:foo.bar.A(timesAssign) p:kotlin(Unit)*/a *= b
/*p:foo.bar(div) p:foo.bar(divAssign) p:foo.bar.A(div) p:foo.bar.A(divAssign) p:kotlin(Unit)*/a /= b
/*p:foo.bar(times) p:foo.bar.A(times) p:foo.bar.A(timesAssign)*/a *= b
/*p:foo.bar(div) p:foo.bar(divAssign) p:foo.bar.A(div) p:foo.bar.A(divAssign)*/a /= b
// for var
/*p:foo.bar(A) p:foo.bar(plusAssign) p:foo.bar.A(plus) p:foo.bar.A(plusAssign)*/d += b
/*p:foo.bar(A) p:foo.bar(minus) p:foo.bar(minusAssign) p:foo.bar.A(minus) p:foo.bar.A(minusAssign)*/d -= b
/*p:foo.bar(times) p:foo.bar.A(times) p:foo.bar.A(timesAssign) p:kotlin(Unit)*/d *= b
/*p:foo.bar(div) p:foo.bar(divAssign) p:foo.bar.A(div) p:foo.bar.A(divAssign) p:kotlin(Unit)*/d /= b
/*p:foo.bar(times) p:foo.bar.A(times) p:foo.bar.A(timesAssign)*/d *= b
/*p:foo.bar(div) p:foo.bar(divAssign) p:foo.bar.A(div) p:foo.bar.A(divAssign)*/d /= b
}
@@ -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?) {
/*p:foo.bar(set) p:foo.bar.A(set) p:kotlin(Unit)*/a[1] = /*p:foo.bar.A(get) p:kotlin(Int)*/a[2]
/*p:foo.bar(set) p:foo.bar.A(set)*/a[1] = /*p:foo.bar.A(get)*/a[2]
/*p:foo.bar.A(contains) p:kotlin(Boolean)*/b in a
/*p:foo.bar(contains) p:foo.bar.A(contains) p:kotlin(Boolean) p:kotlin.Boolean(not)*/"s" !in a
/*p:foo.bar.A(contains)*/b in a
/*p:foo.bar(contains) p:foo.bar.A(contains) p:kotlin.Boolean(not)*/"s" !in a
/*p:foo.bar(A) p:foo.bar.A(invoke) p:kotlin(Unit)*/a()
/*p:foo.bar p:foo.bar(A) p:foo.bar(invoke) p:foo.bar.A(invoke) p:kotlin(Unit)*/a(1)
/*p:foo.bar(A) p:foo.bar.A(invoke)*/a()
/*p:foo.bar p:foo.bar(A) p:foo.bar(invoke) p:foo.bar.A(invoke)*/a(1)
val (/*p:foo.bar(A) p:foo.bar.A(component1)*/h, /*p:foo.bar(A) p:foo.bar(component2) p:foo.bar.A(component2)*/t) = a;
for ((/*p:foo.bar(A) p:foo.bar.A(component1)*/f, /*p:foo.bar(A) p:foo.bar(component2) p:foo.bar.A(component2)*/s) in /*p:foo.bar(A) p:foo.bar(hasNext) p:foo.bar.A(hasNext) p:foo.bar.A(iterator) p:foo.bar.A(next) p:kotlin(Boolean)*/a);
for ((/*p:foo.bar(A) p:foo.bar.A(component1)*/f, /*p:foo.bar(A) p:foo.bar(component2) p:foo.bar.A(component2)*/s) in /*p:foo.bar(A) p:foo.bar(hasNext) p:foo.bar(iterator) p:foo.bar.A(hasNext) p:foo.bar.A(iterator) p:foo.bar.A(next) p:foo.bar.A?(iterator) p:kotlin(Boolean)*/na);
for ((/*p:foo.bar(A) p:foo.bar.A(component1)*/f, /*p:foo.bar(A) p:foo.bar(component2) p:foo.bar.A(component2)*/s) in /*p:foo.bar(A) p:foo.bar(hasNext) p:foo.bar.A(hasNext) p:foo.bar.A(iterator) p:foo.bar.A(next)*/a);
for ((/*p:foo.bar(A) p:foo.bar.A(component1)*/f, /*p:foo.bar(A) p:foo.bar(component2) p:foo.bar.A(component2)*/s) in /*p:foo.bar(A) p:foo.bar(hasNext) p:foo.bar(iterator) p:foo.bar.A(hasNext) p:foo.bar.A(iterator) p:foo.bar.A(next) p:foo.bar.A?(iterator)*/na);
}
@@ -13,7 +13,7 @@ package foo
/*p:foo*/fun useListOfB(b: /*p:foo*/List</*p:foo*/B>) {}
/*p:foo*/fun testInferredType() {
/*p:foo p:kotlin(Unit)*/useListOfA(/*p:foo p:foo(A) p:kotlin.collections(List)*/getListOfA())
/*p:foo p:kotlin(Unit)*/useListOfA(/*p:foo p:foo(B) p:kotlin.collections(List)*/getListOfB())
/*p:foo p:kotlin(Unit)*/useListOfB(/*p:foo p:foo(B) p:kotlin.collections(List)*/getListOfB())
/*p:foo*/useListOfA(/*p:foo p:foo(A) p:kotlin.collections(List)*/getListOfA())
/*p:foo*/useListOfA(/*p:foo p:foo(B) p:kotlin.collections(List)*/getListOfB())
/*p:foo*/useListOfB(/*p:foo p:foo(B) p:kotlin.collections(List)*/getListOfB())
}
@@ -6,6 +6,6 @@ package foo
/*p:foo*/fun extensionConsumer(fn: /*p:foo*/A.()->/*p:foo*/Unit) {}
/*p:foo*/fun testLambdaParameterType() {
/*p:foo p:kotlin(Unit)*/lambdaConsumer /*p:foo(A) p:kotlin(Function1) p:kotlin(Unit)*/{ /*p:kotlin(Unit)*/it }
/*p:foo p:kotlin(Unit)*/extensionConsumer /*p:foo(A) p:kotlin(Function1) p:kotlin(Unit)*/{ /*p:kotlin(Unit)*/this }
/*p:foo*/lambdaConsumer /*p:foo(A) p:kotlin(Function1)*/{ it }
/*p:foo*/extensionConsumer /*p:foo(A) p:kotlin(Function1)*/{ this }
}
@@ -6,32 +6,32 @@ import baz.*
/*p:foo*/fun usages() {
val c = /*p:bar*/C()
/*p:bar.C(field) p:kotlin(Int)*/c.field
/*p:bar.C(field) p:kotlin(Int)*/c.field = 2
/*p:bar.C(func) p:kotlin(Unit)*/c.func()
/*p:bar.C(field)*/c.field
/*p:bar.C(field)*/c.field = 2
/*p:bar.C(func)*/c.func()
/*p:bar(B) p:bar.C(B) p:bar.C.B(B)*/c.B()
/*p:bar p:baz p:foo*/C.sfield
/*p:bar p:baz p:foo*/C.sfield = "new"
/*p:bar p:baz p:foo p:kotlin(Unit)*/C.sfunc()
/*p:bar p:baz p:foo*/C.sfunc()
/*p:bar p:bar(S) p:baz p:foo*/C.S()
// inherited from I
/*p:bar.C(ifunc) p:kotlin(Unit)*/c.ifunc()
/*p:bar.C(ifunc)*/c.ifunc()
/*p:bar p:baz p:foo*/C.isfield
// expected error: Unresolved reference: IS
/*p:bar p:bar(IS) p:baz p:baz(IS) p:foo p:foo(IS)*/C.IS()
val i: /*p:bar p:baz p:foo*/I = c
/*p:foo.I(ifunc) p:kotlin(Unit)*/i.ifunc()
/*p:foo.I(ifunc)*/i.ifunc()
/*p:bar p:baz p:foo*/I.isfield
/*p:bar p:baz p:foo p:foo(IS)*/I.IS()
/*p:bar p:baz p:foo*/E.F
/*p:bar p:baz p:baz.E(field) p:foo p:kotlin(Int)*/E.F.field
/*p:bar p:baz p:baz.E(func) p:foo p:kotlin(Unit)*/E.S.func()
/*p:bar p:baz p:baz.E(field) p:foo*/E.F.field
/*p:bar p:baz p:baz.E(func) p:foo*/E.S.func()
}
fun classifiers(
@@ -1,5 +1,5 @@
package foo
/*p:foo*/fun useAChild(a: /*p:foo*/AChild) {
/*p:foo.A(f) p:foo.AChild(f) p:kotlin(Unit)*/a.f()
/*p:foo.A(f) p:foo.AChild(f)*/a.f()
}
@@ -3,12 +3,12 @@ package local.declarations
import bar.*
/*p:local.declarations*/fun f(p: /*p:bar p:local.declarations*/Any) {
/*p:kotlin(String) p:kotlin.Any(toString)*/p.toString()
/*p:kotlin.Any(toString)*/p.toString()
val a = 1
val b = a
fun localFun() = b
fun /*p:bar p:local.declarations*/Int.localExtFun() = /*p:kotlin(Int)*/localFun()
fun /*p:bar p:local.declarations*/Int.localExtFun() = localFun()
abstract class LocalI {
abstract var a: /*p:bar p:local.declarations*/Int
@@ -30,20 +30,20 @@ import bar.*
fun foo(): /*p:bar p:local.declarations*/LocalI = null as /*p:bar p:local.declarations*/LocalI
}
/*p:kotlin(Int)*/localFun()
/*p:IOT(localExtFun) p:kotlin(Int)*/1.localExtFun()
localFun()
/*p:IOT(localExtFun)*/1.localExtFun()
val c = LocalC()
/*p:kotlin(Int)*/c.a
/*p:kotlin(String)*/c.b
/*p:kotlin(Unit)*/c.foo()
/*p:kotlin(Int)*/c.bar()
c.a
c.b
c.foo()
c.bar()
val i: /*p:bar p:local.declarations*/LocalI = c
/*p:kotlin(Int)*/i.a
/*p:kotlin(Unit)*/i.foo()
i.a
i.foo()
/*p:kotlin(String)*/o.a
o.a
val ii = o.foo()
/*p:kotlin(Int)*/ii.a
ii.a
}
@@ -7,24 +7,24 @@ package foo.bar
val j = /*p:<root> p:foo*/JavaClass()
val k = /*p:<root> p:foo*/KotlinClass()
/*p:JavaClass(getFoo) p:kotlin(Int)*/j.getFoo()
/*p:JavaClass(getFoo)*/j.getFoo()
/*p:<root>(setFoo) p:JavaClass(setFoo) p:foo(setFoo) p:foo.bar(setFoo)*/j.setFoo(2)
/*p:JavaClass(foo) p:kotlin(Int)*/j.foo = 2
/*p:JavaClass(foo) p:kotlin(Int)*/j.foo
/*p:JavaClass(foo)*/j.foo = 2
/*p:JavaClass(foo)*/j.foo
/*p:JavaClass(bar)*/j.bar
/*p:JavaClass(bar)*/j.bar = ""
/*p:JavaClass(bazBaz) p:kotlin(Int)*/j.bazBaz
/*p:JavaClass(bazBaz) p:kotlin(Int)*/j.bazBaz = ""
/*p:JavaClass(setBoo) p:kotlin(Unit)*/j.setBoo(2)
/*p:JavaClass(bazBaz)*/j.bazBaz
/*p:JavaClass(bazBaz)*/j.bazBaz = ""
/*p:JavaClass(setBoo)*/j.setBoo(2)
/*p:<root>(boo) p:JavaClass(boo) p:foo(boo) p:foo.bar(boo)*/j.boo = 2
/*p:foo.KotlinClass(getFoo) p:kotlin(Int)*/k.getFoo() // getFoo may be an inner class in JavaClass
/*p:foo.KotlinClass(setFoo) p:kotlin(Unit)*/k.setFoo(2)
/*p:foo.KotlinClass(foo) p:kotlin(Int)*/k.foo = 2
/*p:foo.KotlinClass(foo) p:kotlin(Int)*/k.foo
/*p:foo.KotlinClass(getFoo)*/k.getFoo() // getFoo may be an inner class in JavaClass
/*p:foo.KotlinClass(setFoo)*/k.setFoo(2)
/*p:foo.KotlinClass(foo)*/k.foo = 2
/*p:foo.KotlinClass(foo)*/k.foo
/*p:JavaClass(bar) p:foo.KotlinClass(bar)*/k.bar
/*p:JavaClass(bar) p:foo.KotlinClass(bar)*/k.bar = ""
/*p:JavaClass(bazBaz) p:foo.KotlinClass(bazBaz) p:kotlin(Int)*/k.bazBaz
/*p:JavaClass(bazBaz) p:foo.KotlinClass(bazBaz) p:kotlin(Int)*/k.bazBaz = ""
/*p:JavaClass(setBoo) p:foo.KotlinClass(setBoo) p:kotlin(Unit)*/k.setBoo(2)
/*p:JavaClass(bazBaz) p:foo.KotlinClass(bazBaz)*/k.bazBaz
/*p:JavaClass(bazBaz) p:foo.KotlinClass(bazBaz)*/k.bazBaz = ""
/*p:JavaClass(setBoo) p:foo.KotlinClass(setBoo)*/k.setBoo(2)
/*p:<root>(boo) p:foo(boo) p:foo.KotlinClass(boo) p:foo.bar(boo)*/k.boo = 2
}
@@ -1,5 +1,5 @@
package top
/*p:top*/fun typeAliasUsage(a: /*p:top*/TypeAlias) {
/*p:kotlin(Int) p:top.Foo(prop) p:top.TypeAlias(prop)*/a.prop
/*p:top.Foo(prop) p:top.TypeAlias(prop)*/a.prop
}