IC tests: add infrastructure for K1/K2 lookups comparison

Adapt lookup tests to allow running K1 and K2 on the same testdata
and compare the lookups recorded.
This commit is contained in:
Ilya Chernikov
2024-02-26 11:04:59 +01:00
committed by Space Team
parent 684d0b8690
commit 1989e8f094
40 changed files with 838 additions and 73 deletions
@@ -2,6 +2,6 @@
Compiling files:
src/usages.kt
Exit code: COMPILATION_ERROR
No value passed for parameter 'x'.
No value passed for parameter 'x'.
No value passed for parameter 'function'.
No value passed for parameter 'x'
No value passed for parameter 'x'
No value passed for parameter 'function'
@@ -0,0 +1,7 @@
==== INITIAL BUILD ====
Compiling files:
src/usages.kt
Exit code: COMPILATION_ERROR
No value passed for parameter 'x'.
No value passed for parameter 'x'.
No value passed for parameter 'function'.
@@ -0,0 +1,14 @@
package foo
/*p:bar(C)*/import bar.C
/*p:bar(SAMInterface)*/import bar.SAMInterface
/*p:foo*/fun foo(c: /*p:bar*/C) /*p:bar(SAMInterface)*/{
/*p:bar(C)*/c./*p:bar.C p:bar.C(getFOO) p:bar.C(getFoo) p:foo p:java.lang p:kotlin p:kotlin.annotation p:kotlin.collections p:kotlin.comparisons p:kotlin.io p:kotlin.jvm p:kotlin.ranges p:kotlin.sequences p:kotlin.text*/foo()
/*p:bar(C)*/c./*p:bar.C p:bar.SAMInterface(<SAM-CONSTRUCTOR>)*/foo /*p:kotlin(Function1)*/{ }
/*p:bar p:foo p:java.lang p:kotlin p:kotlin.annotation p:kotlin.collections p:kotlin.comparisons p:kotlin.io p:kotlin.jvm p:kotlin.ranges p:kotlin.sequences p:kotlin.text*/C./*p:bar.C*/bar()
/*p:bar p:foo p:java.lang p:kotlin p:kotlin.annotation p:kotlin.collections p:kotlin.comparisons p:kotlin.io p:kotlin.jvm p:kotlin.ranges p:kotlin.sequences p:kotlin.text*/C./*p:bar.C p:bar.SAMInterface(<SAM-CONSTRUCTOR>)*/bar /*p:kotlin(Function1)*/{}
/*p:bar p:bar.SAMInterface(<SAM-CONSTRUCTOR>) p:foo p:java.lang p:kotlin p:kotlin.annotation p:kotlin.collections p:kotlin.comparisons p:kotlin.io p:kotlin.jvm p:kotlin.ranges p:kotlin.sequences p:kotlin.text*/SAMInterface()
/*p:bar p:bar.SAMInterface(<SAM-CONSTRUCTOR>)*/SAMInterface /*p:kotlin(Function1)*/{}
}
@@ -15,7 +15,7 @@ Exit code: OK
Compiling files:
src/usages.kt
Exit code: COMPILATION_ERROR
Unresolved reference 'vala'.
Unresolved reference 'vara'.
Unresolved reference 'foo'.
Unresolved reference 'bar'.
Unresolved reference: vala
Unresolved reference: vara
Unresolved reference: foo
Unresolved reference: bar
@@ -0,0 +1,7 @@
package foo
import bar.*
/*p:foo*/fun <T : /*p:foo*/A?, B : /*p:foo p:kotlin.collections*/Iterable</*p:foo p:kotlin*/Number>, C, D> test()
where C : /*p:foo p:kotlin*/Number, C : /*p:foo p:kotlin*/Comparable</*p:foo p:kotlin*/Number>, D : B
{}
@@ -0,0 +1,21 @@
==== INITIAL BUILD ====
Compiling files:
src/bar.kt
src/constraints.kt
src/foo.kt
src/usages.kt
Exit code: OK
==== STEP 1 ====
Compiling files:
src/usages.kt
Exit code: OK
==== STEP 2 ====
Compiling files:
src/usages.kt
Exit code: COMPILATION_ERROR
Unresolved reference 'vala'.
Unresolved reference 'vara'.
Unresolved reference 'foo'.
Unresolved reference 'bar'.
@@ -0,0 +1,69 @@
package foo
/*p:foo*/class A {
val a = 1
var b = ""
val c: /*p:foo p:foo.A p:foo.A.Companion*/String
get() = /*p:foo.A*/b
var d: /*p:foo p:foo.A p:foo.A.Companion*/String = "ddd"
get() = field
set(v) { field = v }
fun foo() {
/*p:foo.A*/a
/*p:foo.A*/foo()
/*p:foo(A)*/this./*p:foo.A*/a
/*p:foo(A)*/this./*p:foo.A*/foo()
/*p:foo p:foo.A p:foo.A(getBAZ) p:foo.A(getBaz) p:foo.A.Companion p:java.lang p:kotlin p:kotlin.annotation p:kotlin.collections p:kotlin.comparisons p:kotlin.io p:kotlin.jvm p:kotlin.ranges p:kotlin.sequences p:kotlin.text*/baz()
/*p:foo p:foo.A p:foo.A.Companion p:java.lang p:kotlin p:kotlin.annotation p:kotlin.collections p:kotlin.comparisons p:kotlin.io p:kotlin.jvm p:kotlin.ranges p:kotlin.sequences p:kotlin.text*/Companion./*p:foo.A.Companion*/a
/*p:foo p:foo.A p:foo.A.Companion p:java.lang p:kotlin p:kotlin.annotation p:kotlin.collections p:kotlin.comparisons p:kotlin.io p:kotlin.jvm p:kotlin.ranges p:kotlin.sequences p:kotlin.text*/O./*p:foo.A.O*/v = "OK"
}
class B {
val a = 1
companion object CO {
fun bar(a: /*p:foo p:foo.A p:foo.A.B p:foo.A.B.CO p:foo.A.Companion*/Int) {}
}
}
inner class C
companion object {
val a = 1
fun baz() {}
}
object O {
var v = "vvv"
}
}
/*p:foo*/interface I {
var a: /*p:foo p:foo.I*/Int
fun foo()
class NI
}
/*p:foo*/object Obj : /*p:foo*/I {
override var a = 1
override fun foo() {}
val b = 1
fun bar(): /*p:foo p:foo.Obj*/I = /*p:foo(I) p:kotlin(Nothing)*/null as /*p:foo p:foo.Obj*/I
}
/*p:foo*/enum class E {
X,
Y;
val a = 1
fun foo() {
/*p:foo.E*/a
/*p:foo p:foo.E p:java.lang p:kotlin p:kotlin.annotation p:kotlin.collections p:kotlin.comparisons p:kotlin.io p:kotlin.jvm p:kotlin.ranges p:kotlin.sequences p:kotlin.text*/Y./*p:foo.E*/a
/*p:foo.E*/foo()
/*p:foo p:foo.E p:java.lang p:kotlin p:kotlin.annotation p:kotlin.collections p:kotlin.comparisons p:kotlin.io p:kotlin.jvm p:kotlin.ranges p:kotlin.sequences p:kotlin.text*/X./*p:foo.E*/foo()
}
}
@@ -0,0 +1,50 @@
package foo
import bar.*
/*p:foo*/fun usages(i: /*p:foo*/I) /*p:foo(E)*/{
/*p:foo p:foo(invoke) p:foo.A.Companion(invoke)*/A()./*p:foo.A*/a
/*p:foo p:foo(invoke) p:foo.A.Companion(invoke)*/A()./*p:foo.A*/b
/*p:foo p:foo(invoke) p:foo.A.Companion(invoke)*/A()./*p:foo.A*/c
/*p:foo p:foo(invoke) p:foo.A.Companion(invoke)*/A()./*p:foo.A*/d = "new value"
/*p:foo p:foo(invoke) p:foo.A.Companion(invoke)*/A()./*p:foo.A*/foo()
/*p:foo*/A./*p:foo.A p:foo.A.B.CO(invoke) p:foo.A.Companion*/B()./*p:foo.A.B*/a
/*p:foo*/A./*p:foo.A*/B./*p:foo.A.B p:foo.A.B.CO*/bar(1)
/*p:foo*/A./*p:foo.A*/B./*p:foo.A.B*/CO./*p:foo.A.B.CO*/bar(1)
/*p:foo p:foo.A(Companion)*/A
/*p:foo*/A./*p:foo.A p:foo.A.Companion*/a
/*p:foo*/A./*p:foo.A p:foo.A.Companion*/baz()
/*p:foo p:foo.A(Companion)*/A./*p:foo.A p:foo.A.Companion*/Companion
/*p:foo*/A./*p:foo.A*/Companion./*p:foo.A.Companion*/baz()
/*p:foo p:foo.A(O)*/A./*p:foo.A p:foo.A.Companion*/O
/*p:foo*/A./*p:foo.A*/O./*p:foo.A.O*/v = "OK"
/*p:foo(I)*/i./*p:foo.I*/a = 2
/*p:foo*/Obj./*p:foo.Obj*/a
/*p:foo*/Obj./*p:foo.Obj*/foo()
var ii: /*p:foo*/I = /*p:foo*/Obj
/*p:foo(I)*/ii./*p:foo.I*/a
/*p:foo(I)*/ii./*p:foo.I*/foo()
/*p:foo*/Obj./*p:foo.Obj*/b
val iii = /*p:foo p:foo(I)*/Obj./*p:foo.Obj*/bar()
/*p:foo(I)*/iii./*p:foo.I*/foo()
/*p:bar p:foo p:java.lang p:kotlin p:kotlin.annotation p:kotlin.collections p:kotlin.comparisons p:kotlin.io p:kotlin.jvm p:kotlin.ranges p:kotlin.sequences p:kotlin.text*/E./*p:foo.E*/X
/*p:bar p:foo p:java.lang p:kotlin p:kotlin.annotation p:kotlin.collections p:kotlin.comparisons p:kotlin.io p:kotlin.jvm p:kotlin.ranges p:kotlin.sequences p:kotlin.text*/E./*p:foo.E*/X./*p:foo.E*/a
/*p:bar p:foo p:java.lang p:kotlin p:kotlin.annotation p:kotlin.collections p:kotlin.comparisons p:kotlin.io p:kotlin.jvm p:kotlin.ranges p:kotlin.sequences p:kotlin.text*/E./*p:foo.E*/Y./*p:foo.E*/foo()
/*p:bar p:foo p:java.lang p:kotlin p:kotlin(Array) p:kotlin.annotation p:kotlin.collections p:kotlin.comparisons p:kotlin.io p:kotlin.jvm p:kotlin.ranges p:kotlin.sequences p:kotlin.text*/E./*p:foo.E*/values()
/*p:bar p:foo p:java.lang p:kotlin p:kotlin.annotation p:kotlin.collections p:kotlin.comparisons p:kotlin.io p:kotlin.jvm p:kotlin.ranges p:kotlin.sequences p:kotlin.text*/E./*p:foo.E*/valueOf("")
}
/*p:foo*/fun classifiers(
a: /*p:foo*/A,
ab: /*p:foo*/A./*p:foo.A*/B,
ac: /*p:foo*/A./*p:foo.A*/C,
abCo: /*p:foo*/A./*p:foo.A*/B./*p:foo.A.B*/CO,
aCompanion: /*p:foo*/A./*p:foo.A*/Companion,
aO: /*p:foo*/A./*p:foo.A*/O,
i: /*p:foo*/I,
ni: /*p:foo*/I./*p:foo.I*/NI,
obj: /*p:foo*/Obj,
e: /*p:foo*/E
) {}
@@ -0,0 +1,54 @@
package foo
import bar.*
/*p:foo*/fun usages(i: /*p:foo*/I) {
/*p:foo p:foo(invoke) p:foo.A.Companion(invoke)*/A()./*p:foo.A*/a
/*p:foo p:foo(invoke) p:foo.A.Companion(invoke)*/A()./*p:foo.A*/b
/*p:foo p:foo(invoke) p:foo.A.Companion(invoke)*/A()./*p:foo.A*/c
/*p:foo p:foo(invoke) p:foo.A.Companion(invoke)*/A()./*p:foo.A*/d = "new value"
/*p:foo p:foo(invoke) p:foo.A.Companion(invoke)*/A()./*p:foo.A*/foo()
/*p:foo*/A./*p:foo.A p:foo.A.B.CO(invoke) p:foo.A.Companion*/B()./*p:foo.A.B*/a
/*p:foo*/A./*p:foo.A*/B./*p:foo.A.B p:foo.A.B.CO*/bar(1)
/*p:foo*/A./*p:foo.A*/B./*p:foo.A.B*/CO./*p:foo.A.B.CO*/bar(1)
/*p:foo p:foo.A(Companion)*/A
/*p:foo*/A./*p:foo.A p:foo.A.Companion*/a
/*p:foo*/A./*p:foo.A p:foo.A.Companion*/baz()
/*p:foo p:foo.A(Companion)*/A./*p:foo.A p:foo.A.Companion*/Companion
/*p:foo*/A./*p:foo.A*/Companion./*p:foo.A.Companion*/baz()
/*p:foo p:foo.A(O)*/A./*p:foo.A p:foo.A.Companion*/O
/*p:foo*/A./*p:foo.A*/O./*p:foo.A.O*/v = "OK"
/*p:foo*/A./*p:bar p:foo p:foo.A p:foo.A.Companion p:foo.A.Companion(getVALA) p:foo.A.Companion(getVala) p:java.lang p:kotlin p:kotlin.annotation p:kotlin.collections p:kotlin.comparisons p:kotlin.io p:kotlin.jvm p:kotlin.ranges p:kotlin.sequences p:kotlin.text*/vala
/*p:foo*/A./*p:bar p:foo p:foo.A p:foo.A.Companion p:foo.A.Companion(getVARA) p:foo.A.Companion(getVara) p:java.lang p:kotlin p:kotlin.annotation p:kotlin.collections p:kotlin.comparisons p:kotlin.io p:kotlin.jvm p:kotlin.ranges p:kotlin.sequences p:kotlin.text*/vara()
/*p:foo(I)*/i./*p:foo.I*/a = 2
/*p:foo*/Obj./*p:foo.Obj*/a
/*p:foo*/Obj./*p:foo.Obj*/foo()
var ii: /*p:foo*/I = /*p:foo*/Obj
/*p:foo(I)*/ii./*p:foo.I*/a
/*p:foo(I)*/ii./*p:foo.I*/foo()
/*p:foo*/Obj./*p:foo.Obj*/b
val iii = /*p:foo p:foo(I)*/Obj./*p:foo.Obj*/bar()
/*p:foo(I)*/iii./*p:foo.I*/foo()
/*p:bar p:foo p:java.lang p:kotlin p:kotlin.annotation p:kotlin.collections p:kotlin.comparisons p:kotlin.io p:kotlin.jvm p:kotlin.ranges p:kotlin.sequences p:kotlin.text*/E./*p:foo.E*/X
/*p:bar p:foo p:java.lang p:kotlin p:kotlin.annotation p:kotlin.collections p:kotlin.comparisons p:kotlin.io p:kotlin.jvm p:kotlin.ranges p:kotlin.sequences p:kotlin.text*/E./*p:foo.E*/X./*p:foo.E*/a
/*p:bar p:foo p:java.lang p:kotlin p:kotlin.annotation p:kotlin.collections p:kotlin.comparisons p:kotlin.io p:kotlin.jvm p:kotlin.ranges p:kotlin.sequences p:kotlin.text*/E./*p:foo.E*/Y./*p:foo.E*/foo()
/*p:bar p:foo p:java.lang p:kotlin p:kotlin(Array) p:kotlin.annotation p:kotlin.collections p:kotlin.comparisons p:kotlin.io p:kotlin.jvm p:kotlin.ranges p:kotlin.sequences p:kotlin.text*/E./*p:foo.E*/values()
/*p:bar p:foo p:java.lang p:kotlin p:kotlin.annotation p:kotlin.collections p:kotlin.comparisons p:kotlin.io p:kotlin.jvm p:kotlin.ranges p:kotlin.sequences p:kotlin.text*/E./*p:foo.E*/valueOf("")
/*p:bar p:foo p:java.lang p:kotlin p:kotlin.annotation p:kotlin.collections p:kotlin.comparisons p:kotlin.io p:kotlin.jvm p:kotlin.ranges p:kotlin.sequences p:kotlin.text*/E./*p:foo.E*/foo
/*p:bar p:foo p:java.lang p:kotlin p:kotlin.annotation p:kotlin.collections p:kotlin.comparisons p:kotlin.io p:kotlin.jvm p:kotlin.ranges p:kotlin.sequences p:kotlin.text*/E./*p:foo.E*/bar()
}
/*p:foo*/fun classifiers(
a: /*p:foo*/A,
ab: /*p:foo*/A./*p:foo.A*/B,
ac: /*p:foo*/A./*p:foo.A*/C,
abCo: /*p:foo*/A./*p:foo.A*/B./*p:foo.A.B*/CO,
aCompanion: /*p:foo*/A./*p:foo.A*/Companion,
aO: /*p:foo*/A./*p:foo.A*/O,
i: /*p:foo*/I,
ni: /*p:foo*/I./*p:foo.I*/NI,
obj: /*p:foo*/Obj,
e: /*p:foo*/E
) {}
@@ -0,0 +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?) {
/*p:foo.bar(A)*/a /*p:foo.bar.A(equals)*/== c
/*p:foo.bar(A)*/a /*p:foo.bar.A(equals)*/!= c
/*p:foo.bar(A)*/na /*p:foo.bar.A(equals)*/== /*p:foo.bar(A)*/a
/*p:foo.bar(A)*/na /*p:foo.bar.A(equals)*/== /*p:kotlin(Nothing)*/null
/*p:foo.bar(A)*/a /*p:foo.bar.A(compareTo)*/> b
/*p:foo.bar(A)*/a /*p:foo.bar.A(compareTo)*/< b
/*p:foo.bar(A)*/a /*p:foo.bar.A(compareTo)*/>= b
/*p:foo.bar(A)*/a /*p:foo.bar.A(compareTo)*/<= b
/*p:foo.bar(A)*/a /*p:foo.bar(compareTo) p:foo.bar.A(compareTo) p:foo.bar.A(getCOMPARETo) p:foo.bar.A(getCompareTo)*/> c
/*p:foo.bar(A)*/a /*p:foo.bar(compareTo) p:foo.bar.A(compareTo) p:foo.bar.A(getCOMPARETo) p:foo.bar.A(getCompareTo)*/< c
/*p:foo.bar(A)*/a /*p:foo.bar(compareTo) p:foo.bar.A(compareTo) p:foo.bar.A(getCOMPARETo) p:foo.bar.A(getCompareTo)*/>= c
/*p:foo.bar(A)*/a /*p:foo.bar(compareTo) p:foo.bar.A(compareTo) p:foo.bar.A(getCOMPARETo) p:foo.bar.A(getCompareTo)*/<= c
}
@@ -0,0 +1,35 @@
package foo.bar
/*p:foo.bar*/class A {
operator fun plus(a: /*p:foo.bar p:foo.bar.A*/Int) = /*p:foo.bar(A)*/this
operator fun timesAssign(a: /*p:foo.bar p:foo.bar.A*/Any?) {}
operator fun inc(): /*p:foo.bar p:foo.bar.A*/A = /*p:foo.bar(A)*/this
operator fun get(i: /*p:foo.bar p:foo.bar.A*/Int) = 1
operator fun contains(a: /*p:foo.bar p:foo.bar.A*/Int): /*p:foo.bar p:foo.bar.A*/Boolean = false
operator fun invoke() {}
operator fun compareTo(a: /*p:foo.bar p:foo.bar.A*/Int) = 0
operator fun component1() = /*p:foo.bar(A)*/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) = /*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 = /*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.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.component2() = /*p:foo.bar(A)*/this
/*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 = false
@@ -0,0 +1,30 @@
package foo.bar
/*p:kotlin.reflect(KProperty)*/import kotlin.reflect.KProperty
/*p:foo.bar*/class D1 {
operator fun getValue(t: /*p:foo.bar p:foo.bar.D1*/Any?, p: /*p:foo.bar.D1 p:kotlin.reflect*/KProperty<*>) = 1
}
/*p:foo.bar*/operator fun /*p:foo.bar*/D1.setValue(t: /*p:foo.bar*/Any?, p: /*p:kotlin.reflect*/KProperty<*>, v: /*p:foo.bar*/Int) {}
/*p:foo.bar(D2)*/open class D2 {
operator fun setValue(t: /*p:foo.bar p:foo.bar.D2*/Any?, p: /*p:foo.bar.D2 p:kotlin.reflect*/KProperty<*>, v: /*p:foo.bar p:foo.bar.D2*/Int) {}
}
/*p:foo.bar*/operator fun /*p:foo.bar*/D2.getValue(t: /*p:foo.bar*/Any?, p: /*p:kotlin.reflect*/KProperty<*>) = 1
/*p:foo.bar*/operator fun /*p:foo.bar*/D2.provideDelegate(p: /*p:foo.bar*/Any?, k: /*p:foo.bar*/Any) = /*p:foo.bar(D2)*/this
/*p:foo.bar*/class D3 : /*p:foo.bar*/D2() {
operator fun provideDelegate(p: /*p:foo.bar p:foo.bar.D2 p:foo.bar.D3*/Any?, k: /*p:foo.bar p:foo.bar.D2 p:foo.bar.D3*/Any) = /*p:foo.bar(D3)*/this
}
/*p:foo.bar*/val x1 by /*p:foo.bar p:foo.bar(provideDelegate) p:foo.bar.D1(getPROVIDEDelegate) p:foo.bar.D1(getProvideDelegate) p:foo.bar.D1(getValue) p:foo.bar.D1(provideDelegate) p:java.lang(provideDelegate) p:kotlin(provideDelegate) p:kotlin.annotation(provideDelegate) p:kotlin.collections(provideDelegate) p:kotlin.comparisons(provideDelegate) p:kotlin.io(provideDelegate) p:kotlin.jvm(provideDelegate) p:kotlin.ranges(provideDelegate) p:kotlin.sequences(provideDelegate) p:kotlin.text(provideDelegate)*/D1()
/*p:foo.bar*/var y1 by /*p:foo.bar p:foo.bar(provideDelegate) p:foo.bar(setValue) p:foo.bar.D1(getPROVIDEDelegate) p:foo.bar.D1(getProvideDelegate) p:foo.bar.D1(getSETValue) p:foo.bar.D1(getSetValue) p:foo.bar.D1(getValue) p:foo.bar.D1(provideDelegate) p:foo.bar.D1(setValue) p:java.lang(provideDelegate) p:kotlin(provideDelegate) p:kotlin.annotation(provideDelegate) p:kotlin.collections(provideDelegate) p:kotlin.comparisons(provideDelegate) p:kotlin.io(provideDelegate) p:kotlin.jvm(provideDelegate) p:kotlin.ranges(provideDelegate) p:kotlin.sequences(provideDelegate) p:kotlin.text(provideDelegate)*/D1()
/*p:foo.bar*/val x2 by /*p:foo.bar p:foo.bar(getValue) p:foo.bar(provideDelegate) p:foo.bar.D2(getGETValue) p:foo.bar.D2(getGetValue) p:foo.bar.D2(getPROVIDEDelegate) p:foo.bar.D2(getProvideDelegate) p:foo.bar.D2(getValue) p:foo.bar.D2(provideDelegate)*/D2()
/*p:foo.bar*/var y2 by /*p:foo.bar p:foo.bar(getValue) p:foo.bar(provideDelegate) p:foo.bar.D2(getGETValue) p:foo.bar.D2(getGetValue) p:foo.bar.D2(getPROVIDEDelegate) p:foo.bar.D2(getProvideDelegate) p:foo.bar.D2(getValue) p:foo.bar.D2(provideDelegate) p:foo.bar.D2(setValue)*/D2()
/*p:foo.bar*/val x3 by /*p:foo.bar p:foo.bar(getValue) p:foo.bar.D2(getValue) p:foo.bar.D2(provideDelegate) p:foo.bar.D3(getGETValue) p:foo.bar.D3(getGetValue) p:foo.bar.D3(getValue) p:foo.bar.D3(provideDelegate)*/D3()
/*p:foo.bar*/var y3 by /*p:foo.bar p:foo.bar(getValue) p:foo.bar.D2(getValue) p:foo.bar.D2(provideDelegate) p:foo.bar.D2(setValue) p:foo.bar.D3(getGETValue) p:foo.bar.D3(getGetValue) p:foo.bar.D3(getValue) p:foo.bar.D3(provideDelegate) p:foo.bar.D3(setValue)*/D3()
@@ -0,0 +1,24 @@
package foo.bar
/*p:foo.bar*/fun testOperators(a: /*p:foo.bar*/A, b: /*p:foo.bar*/Int) {
var d = /*p:foo.bar(A)*/a
/*p:foo.bar(A)*/d/*p:foo.bar.A(inc)*/++
/*p:foo.bar(A) p:foo.bar.A(inc)*/++/*p:foo.bar(A)*/d
/*p:foo.bar(A)*/d/*p:foo.bar(dec) p:foo.bar.A(dec) p:foo.bar.A(getDEC) p:foo.bar.A(getDec)*/--
/*p:foo.bar(A) p:foo.bar(dec) p:foo.bar.A(dec) p:foo.bar.A(getDEC) p:foo.bar.A(getDec)*/--/*p:foo.bar(A)*/d
/*p:foo.bar(A)*/a /*p:foo.bar.A(plus)*/+ b
/*p:foo.bar(A)*/a /*p:foo.bar(minus) p:foo.bar.A(getMINUS) p:foo.bar.A(getMinus) p:foo.bar.A(minus)*/- b
/*p:foo.bar(not) p:foo.bar.A(getNOT) p:foo.bar.A(getNot) p:foo.bar.A(not)*/!/*p:foo.bar(A)*/a
// for val
/*p:foo.bar(A)*/a /*p:foo.bar.A(timesAssign)*/*= b
/*p:foo.bar(A)*/a /*p:foo.bar(divAssign) p:foo.bar.A(divAssign) p:foo.bar.A(getDIVAssign) p:foo.bar.A(getDivAssign)*//= b
// for var
/*p:foo.bar(A)*/d /*p:foo.bar(plusAssign) p:foo.bar.A(getPLUSAssign) p:foo.bar.A(getPlusAssign) p:foo.bar.A(plus) p:foo.bar.A(plusAssign) p:java.lang(plusAssign) p:kotlin(plusAssign) p:kotlin.annotation(plusAssign) p:kotlin.collections(plusAssign) p:kotlin.comparisons(plusAssign) p:kotlin.io(plusAssign) p:kotlin.jvm(plusAssign) p:kotlin.ranges(plusAssign) p:kotlin.sequences(plusAssign) p:kotlin.text(plusAssign)*/+= b
/*p:foo.bar(A)*/d /*p:foo.bar(minus) p:foo.bar(minusAssign) p:foo.bar.A(getMINUS) p:foo.bar.A(getMINUSAssign) p:foo.bar.A(getMinus) p:foo.bar.A(getMinusAssign) p:foo.bar.A(minus) p:foo.bar.A(minusAssign) p:java.lang(minusAssign) p:kotlin(minusAssign) p:kotlin.annotation(minusAssign) p:kotlin.collections(minusAssign) p:kotlin.comparisons(minusAssign) p:kotlin.io(minusAssign) p:kotlin.jvm(minusAssign) p:kotlin.ranges(minusAssign) p:kotlin.sequences(minusAssign) p:kotlin.text(minusAssign)*/-= b
/*p:foo.bar(A)*/d /*p:foo.bar(times) p:foo.bar.A(getTIMES) p:foo.bar.A(getTimes) p:foo.bar.A(times) p:foo.bar.A(timesAssign) p:java.lang(times) p:kotlin(times) p:kotlin.annotation(times) p:kotlin.collections(times) p:kotlin.comparisons(times) p:kotlin.io(times) p:kotlin.jvm(times) p:kotlin.ranges(times) p:kotlin.sequences(times) p:kotlin.text(times)*/*= b
/*p:foo.bar(A)*/d /*p:foo.bar(div) p:foo.bar(divAssign) p:foo.bar.A(div) p:foo.bar.A(divAssign) p:foo.bar.A(getDIV) p:foo.bar.A(getDIVAssign) p:foo.bar.A(getDiv) p:foo.bar.A(getDivAssign) p:java.lang(div) p:kotlin(div) p:kotlin.annotation(div) p:kotlin.collections(div) p:kotlin.comparisons(div) p:kotlin.io(div) p:kotlin.jvm(div) p:kotlin.ranges(div) p:kotlin.sequences(div) p:kotlin.text(div)*//= b
}
@@ -0,0 +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(A) p:foo.bar(set) p:foo.bar.A(getSET) p:foo.bar.A(getSet) p:foo.bar.A(set)*/a[1] = /*p:foo.bar(A) p:foo.bar.A(get)*/a[2]
b /*p:foo.bar.A(contains)*/in /*p:foo.bar(A)*/a
"s" /*p:foo.bar(contains) p:foo.bar.A(contains) p:foo.bar.A(getCONTAINS) p:foo.bar.A(getContains)*/!in /*p:foo.bar(A)*/a
/*p:foo.bar.A(invoke)*/a()
/*p:foo.bar p:foo.bar(invoke) p:foo.bar.A(invoke)*/a(1)
val (/*p:foo.bar.A(component1)*/h, /*p:foo.bar(component2) p:foo.bar.A(component2) p:foo.bar.A(getComponent2)*/t) = /*p:foo.bar(A)*/a;
for ((/*p:foo.bar.A(component1)*/f, /*p:foo.bar(component2) p:foo.bar.A(component2) p:foo.bar.A(getComponent2)*/s) in /*p:foo.bar(A) p:foo.bar(hasNext) p:foo.bar.A(getHASNext) p:foo.bar.A(getHasNext) p:foo.bar.A(hasNext) p:foo.bar.A(iterator) p:foo.bar.A(next)*/a);
for ((/*p:foo.bar.A(component1)*/f, /*p:foo.bar(component2) p:foo.bar.A(component2) p:foo.bar.A(getComponent2)*/s) in /*p:foo.bar(A) p:foo.bar(hasNext) p:foo.bar(iterator) p:foo.bar.A(getHASNext) p:foo.bar.A(getHasNext) p:foo.bar.A(getITERATOR) p:foo.bar.A(getIterator) p:foo.bar.A(hasNext) p:foo.bar.A(iterator) p:foo.bar.A(next)*/na);
}
@@ -0,0 +1,15 @@
package foo
// From KT-10772 Problem with daemon on Idea 15.0.3 & 1-dev-25
/*p:foo*/fun <T> identity(): (T) -> T = /*p:kotlin(Function1) p:kotlin(Nothing)*/null as (T) -> T
/*p:foo*/fun <T> compute(f: () -> T) {
val result = f()
}
/*p:foo*/class Bar<T>(val t: T) {
init {
val a = /*p:foo.Bar p:foo.Bar(T)*/t
}
}
@@ -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:foo(A) p:java.lang p:kotlin p:kotlin.annotation p:kotlin.collections p:kotlin.collections(List) p:kotlin.comparisons p:kotlin.io p:kotlin.jvm p:kotlin.ranges p:kotlin.sequences p:kotlin.text*/listOf(/*p:foo*/A())
/*p:foo*/fun getListOfB() = /*p:foo p:foo(B) p:java.lang p:kotlin p:kotlin.annotation p:kotlin.collections p:kotlin.collections(List) p:kotlin.comparisons p:kotlin.io p:kotlin.jvm p:kotlin.ranges p:kotlin.sequences p:kotlin.text*/listOf(/*p:foo*/B())
/*p:foo*/fun useListOfA(a: /*p:foo p:kotlin.collections*/List</*p:foo*/A>) {}
/*p:foo*/fun useListOfB(b: /*p:foo p:kotlin.collections*/List</*p:foo*/B>) {}
/*p:foo*/fun testInferredType() {
/*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())
}
@@ -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:foo(A) p:kotlin(Function1)*/{ /*p:foo(A)*/it }
/*p:foo*/extensionConsumer /*p:foo(A) p:kotlin(Function1)*/{ /*p:foo(A)*/this }
}
@@ -2,5 +2,5 @@
Compiling files:
src/usages.kt
Exit code: COMPILATION_ERROR
Unresolved reference 'IS'.
Unresolved reference 'IS'.
Unresolved reference: IS
Unresolved reference: IS
@@ -0,0 +1,6 @@
==== INITIAL BUILD ====
Compiling files:
src/usages.kt
Exit code: COMPILATION_ERROR
Unresolved reference 'IS'.
Unresolved reference 'IS'.
@@ -0,0 +1,45 @@
package foo
/*p:bar(C)*/import bar.C
import baz.*
/*p:foo*/fun usages() {
val c = /*p:bar*/C()
/*p:bar(C)*/c./*p:bar.C*/field
/*p:bar(C)*/c./*p:bar.C*/field = 2
/*p:bar(C)*/c./*p:bar.C*/func()
/*p:bar(C) p:bar.C(B)*/c./*p:bar.C*/B()
/*p:bar p:baz p:foo p:java.lang p:kotlin p:kotlin.annotation p:kotlin.collections p:kotlin.comparisons p:kotlin.io p:kotlin.jvm p:kotlin.ranges p:kotlin.sequences p:kotlin.text*/C./*p:bar.C*/sfield
/*p:bar p:baz p:foo p:java.lang p:kotlin p:kotlin.annotation p:kotlin.collections p:kotlin.comparisons p:kotlin.io p:kotlin.jvm p:kotlin.ranges p:kotlin.sequences p:kotlin.text*/C./*p:bar.C*/sfield = "new"
/*p:bar p:baz p:foo p:java.lang p:kotlin p:kotlin.annotation p:kotlin.collections p:kotlin.comparisons p:kotlin.io p:kotlin.jvm p:kotlin.ranges p:kotlin.sequences p:kotlin.text*/C./*p:bar.C*/sfunc()
/*p:bar p:bar.C(S) p:baz p:foo p:java.lang p:kotlin p:kotlin.annotation p:kotlin.collections p:kotlin.comparisons p:kotlin.io p:kotlin.jvm p:kotlin.ranges p:kotlin.sequences p:kotlin.text*/C./*p:bar.C*/S()
// inherited from I
/*p:bar(C)*/c./*p:bar.C*/ifunc()
/*p:bar p:baz p:foo p:java.lang p:kotlin p:kotlin.annotation p:kotlin.collections p:kotlin.comparisons p:kotlin.io p:kotlin.jvm p:kotlin.ranges p:kotlin.sequences p:kotlin.text*/C./*p:bar.C*/isfield
// expected error: Unresolved reference: IS
/*p:bar p:baz p:foo p:java.lang p:kotlin p:kotlin.annotation p:kotlin.collections p:kotlin.comparisons p:kotlin.io p:kotlin.jvm p:kotlin.ranges p:kotlin.sequences p:kotlin.text*/C./*p:bar.C*/IS()
val i: /*p:foo*/I = /*p:bar(C)*/c
/*p:foo(I)*/i./*p:foo.I*/ifunc()
/*p:baz p:foo p:java.lang p:kotlin p:kotlin.annotation p:kotlin.collections p:kotlin.comparisons p:kotlin.io p:kotlin.jvm p:kotlin.ranges p:kotlin.sequences p:kotlin.text*/I./*p:foo.I*/isfield
/*p:baz p:foo p:foo.I(IS) p:java.lang p:kotlin p:kotlin.annotation p:kotlin.collections p:kotlin.comparisons p:kotlin.io p:kotlin.jvm p:kotlin.ranges p:kotlin.sequences p:kotlin.text*/I./*p:foo.I*/IS()
/*p:baz p:foo p:java.lang p:kotlin p:kotlin.annotation p:kotlin.collections p:kotlin.comparisons p:kotlin.io p:kotlin.jvm p:kotlin.ranges p:kotlin.sequences p:kotlin.text*/E./*p:baz.E*/F
/*p:baz p:foo p:java.lang p:kotlin p:kotlin.annotation p:kotlin.collections p:kotlin.comparisons p:kotlin.io p:kotlin.jvm p:kotlin.ranges p:kotlin.sequences p:kotlin.text*/E./*p:baz.E*/F./*p:baz.E*/field
/*p:baz p:foo p:java.lang p:kotlin p:kotlin.annotation p:kotlin.collections p:kotlin.comparisons p:kotlin.io p:kotlin.jvm p:kotlin.ranges p:kotlin.sequences p:kotlin.text*/E./*p:baz.E*/S./*p:baz.E*/func()
}
/*p:foo*/fun classifiers(
c: /*p:bar*/C,
b: /*p:bar*/C./*p:bar.C*/B,
s: /*p:bar*/C./*p:bar.C*/S,
cis: /*p:bar*/C./*p:bar.C*/IS,
i: /*p:foo*/I,
iis: /*p:foo*/I./*p:foo.I*/IS,
e: /*p:baz p:foo*/E
) {}
@@ -0,0 +1,6 @@
package foo
/*p:foo(A)*/open class A {
@/*p:foo p:foo.A p:kotlin p:kotlin.annotation p:kotlin.collections p:kotlin.comparisons p:kotlin.io p:kotlin.jvm p:kotlin.ranges p:kotlin.sequences p:kotlin.text*/JvmName("g")
fun f() {}
}
@@ -0,0 +1,6 @@
package foo
/*p:foo(A)*/open class A {
@/*p:foo p:foo.A p:kotlin p:kotlin.annotation p:kotlin.collections p:kotlin.comparisons p:kotlin.io p:kotlin.jvm p:kotlin.ranges p:kotlin.sequences p:kotlin.text*/JvmName("h")
fun f() {}
}
@@ -0,0 +1,5 @@
package foo
/*p:foo*/fun useAChild(a: /*p:foo*/AChild) {
/*p:foo(AChild)*/a./*p:foo.A p:foo.AChild*/f()
}
@@ -0,0 +1,49 @@
package local.declarations
import bar.*
/*p:local.declarations*/fun f(p: /*p:local.declarations*/Any) {
p.toString()
val a = 1
val b = a
fun localFun() = b
fun /*p:local.declarations*/Int.localExtFun() = localFun()
abstract class LocalI {
abstract var a: /*p:local.declarations*/Int
abstract fun foo()
}
class LocalC : LocalI() {
override var a = 1
override fun foo() {}
var b = "bbb"
fun bar() = b
}
val o = object {
val a = "aaa"
fun foo(): LocalI = /*p:kotlin(Nothing)*/null as LocalI
}
localFun()
1./*p:kotlin.Int(getLOCALExtFun) p:kotlin.Int(getLocalExtFun)*/localExtFun()
val c = LocalC()
c.a
c.b
c.foo()
c.bar()
val i: LocalI = c
i.a
i.foo()
o.a
val ii = o.foo()
ii.a
}
@@ -0,0 +1,17 @@
package foo
import bar.*
/*p:baz(C)*/import baz.C
/*p:foo*/val a = /*p:bar p:foo*/A()
/*p:foo*/var b: /*p:bar p:foo p:java.lang p:kotlin p:kotlin.annotation p:kotlin.collections p:kotlin.comparisons p:kotlin.io p:kotlin.jvm p:kotlin.ranges p:kotlin.sequences p:kotlin.text*/baz./*p:baz*/B = /*p:bar p:baz(B) p:foo p:java.lang p:kotlin p:kotlin.annotation p:kotlin.collections p:kotlin.comparisons p:kotlin.io p:kotlin.jvm p:kotlin.ranges p:kotlin.sequences p:kotlin.text*/baz./*p:baz*/B()
/*p:foo*/fun function(p: /*p:bar p:foo*/B): /*p:bar p:foo*/B /*p:kotlin(Nothing)*/{
/*p:bar(A) p:foo*/a
/*p:kotlin(Nothing)*/return /*p:bar p:foo*/B()
}
/*p:foo*/fun /*p:foo*/MyClass.extFunc(p: /**p:foo p:bar*//*p:foo p:kotlin*/Array</*p:bar p:foo*/B>, e: /*p:foo*/MyEnum, c: /**???*//*p:baz*/C): /*p:foo*/MyInterface /*p:kotlin(Nothing)*/{
/*p:bar p:baz(B) p:foo p:foo.MyClass p:foo.MyClass(getB) p:java.lang p:kotlin p:kotlin.annotation p:kotlin.collections p:kotlin.comparisons p:kotlin.io p:kotlin.jvm p:kotlin.ranges p:kotlin.sequences p:kotlin.text*/b
/*p:kotlin(Nothing)*/return /*p:bar p:foo p:foo.MyClass p:java.lang p:kotlin p:kotlin.annotation p:kotlin.collections p:kotlin.comparisons p:kotlin.io p:kotlin.jvm p:kotlin.ranges p:kotlin.sequences p:kotlin.text*/MyClass()
}
@@ -0,0 +1,6 @@
package foo.bar
/*p:foo.bar*/fun main(args: /*p:foo.bar p:kotlin*/Array</*p:foo.bar*/String>) {
val f: /*p:foo.bar p:kotlin*/Array</*p:foo.bar*/Int>
val s: /*p:foo.bar*/String
}
@@ -0,0 +1,8 @@
package foo
/*p:<root>(JavaClass)*/import JavaClass
/*p:foo*/class KotlinClass : /*p:<root>*/JavaClass() {
override fun getFoo() = 2
fun setFoo(i: /*p:JavaClass p:foo p:foo.KotlinClass*/Int) {}
}
@@ -3,19 +3,11 @@ Compiling files:
src/KotlinClass.kt
src/usages.kt
Exit code: COMPILATION_ERROR
Unresolved reference 'setFoo'.
'val' cannot be reassigned.
Overload resolution ambiguity between candidates:
var bazBaz: Int
val bazBaz: Int
Overload resolution ambiguity between candidates:
var bazBaz: Int
val bazBaz: Int
Unresolved reference 'boo'.
Overload resolution ambiguity between candidates:
var bazBaz: Int
val bazBaz: Int
Overload resolution ambiguity between candidates:
var bazBaz: Int
val bazBaz: Int
Unresolved reference 'boo'.
Unresolved reference: setFoo
Val cannot be reassigned
Unresolved reference: bazBaz
Unresolved reference: bazBaz
Unresolved reference: boo
Unresolved reference: bazBaz
Unresolved reference: bazBaz
Unresolved reference: boo
@@ -0,0 +1,21 @@
==== INITIAL BUILD ====
Compiling files:
src/KotlinClass.kt
src/usages.kt
Exit code: COMPILATION_ERROR
Unresolved reference 'setFoo'.
'val' cannot be reassigned.
Overload resolution ambiguity between candidates:
var bazBaz: Int
val bazBaz: Int
Overload resolution ambiguity between candidates:
var bazBaz: Int
val bazBaz: Int
Unresolved reference 'boo'.
Overload resolution ambiguity between candidates:
var bazBaz: Int
val bazBaz: Int
Overload resolution ambiguity between candidates:
var bazBaz: Int
val bazBaz: Int
Unresolved reference 'boo'.
@@ -0,0 +1,30 @@
package foo.bar
/*p:<root>(JavaClass)*/import JavaClass
/*p:foo(KotlinClass)*/import foo.KotlinClass
/*p:foo.bar*/fun test() {
val j = /*p:<root>*/JavaClass()
val k = /*p:foo*/KotlinClass()
/*p:<root>(JavaClass)*/j./*p:JavaClass*/getFoo()
/*p:<root>(JavaClass)*/j./*p:JavaClass p:JavaClass(getSETFoo) p:JavaClass(getSetFoo) p:foo.bar p:java.lang p:kotlin p:kotlin.annotation p:kotlin.collections p:kotlin.comparisons p:kotlin.io p:kotlin.jvm p:kotlin.ranges p:kotlin.sequences p:kotlin.text*/setFoo(2)
/*p:<root>(JavaClass)*/j./*p:JavaClass p:JavaClass(getFOO) p:JavaClass(getFoo) p:JavaClass(setFoo)*/foo = 2
/*p:<root>(JavaClass)*/j./*p:JavaClass p:JavaClass(getFOO) p:JavaClass(getFoo) p:JavaClass(setFoo)*/foo
/*p:<root>(JavaClass)*/j./*p:JavaClass p:JavaClass(getBAR) p:JavaClass(getBar) p:JavaClass(setBar)*/bar
/*p:<root>(JavaClass)*/j./*p:JavaClass p:JavaClass(getBAR) p:JavaClass(getBar) p:JavaClass(setBar)*/bar = ""
/*p:<root>(JavaClass)*/j./*p:JavaClass p:JavaClass(getBAZBaz) p:JavaClass(getBazBaz) p:foo.bar p:java.lang p:kotlin p:kotlin.annotation p:kotlin.collections p:kotlin.comparisons p:kotlin.io p:kotlin.jvm p:kotlin.ranges p:kotlin.sequences p:kotlin.text*/bazBaz
/*p:<root>(JavaClass)*/j./*p:JavaClass p:JavaClass(getBAZBaz) p:JavaClass(getBazBaz) p:foo.bar p:java.lang p:kotlin p:kotlin.annotation p:kotlin.collections p:kotlin.comparisons p:kotlin.io p:kotlin.jvm p:kotlin.ranges p:kotlin.sequences p:kotlin.text*/bazBaz = ""
/*p:<root>(JavaClass)*/j./*p:JavaClass*/setBoo(2)
/*p:<root>(JavaClass)*/j./*p:JavaClass p:JavaClass(getBOO) p:JavaClass(getBoo) p:foo.bar p:java.lang p:kotlin p:kotlin.annotation p:kotlin.collections p:kotlin.comparisons p:kotlin.io p:kotlin.jvm p:kotlin.ranges p:kotlin.sequences p:kotlin.text*/boo = 2
/*p:foo(KotlinClass)*/k./*p:JavaClass p:foo.KotlinClass*/getFoo() // getFoo may be an inner class in JavaClass
/*p:foo(KotlinClass)*/k./*p:JavaClass p:foo.KotlinClass*/setFoo(2)
/*p:foo(KotlinClass)*/k./*p:foo.KotlinClass p:foo.KotlinClass(getFOO) p:foo.KotlinClass(getFoo) p:foo.KotlinClass(setFoo)*/foo = 2
/*p:foo(KotlinClass)*/k./*p:foo.KotlinClass p:foo.KotlinClass(getFOO) p:foo.KotlinClass(getFoo) p:foo.KotlinClass(setFoo)*/foo
/*p:foo(KotlinClass)*/k./*p:foo.KotlinClass p:foo.KotlinClass(getBAR) p:foo.KotlinClass(getBar) p:foo.KotlinClass(setBar)*/bar
/*p:foo(KotlinClass)*/k./*p:foo.KotlinClass p:foo.KotlinClass(getBAR) p:foo.KotlinClass(getBar) p:foo.KotlinClass(setBar)*/bar = ""
/*p:foo(KotlinClass)*/k./*p:JavaClass p:foo.KotlinClass p:foo.KotlinClass(getBAZBaz) p:foo.KotlinClass(getBazBaz) p:foo.bar p:java.lang p:kotlin p:kotlin.annotation p:kotlin.collections p:kotlin.comparisons p:kotlin.io p:kotlin.jvm p:kotlin.ranges p:kotlin.sequences p:kotlin.text*/bazBaz
/*p:foo(KotlinClass)*/k./*p:JavaClass p:foo.KotlinClass p:foo.KotlinClass(getBAZBaz) p:foo.KotlinClass(getBazBaz) p:foo.bar p:java.lang p:kotlin p:kotlin.annotation p:kotlin.collections p:kotlin.comparisons p:kotlin.io p:kotlin.jvm p:kotlin.ranges p:kotlin.sequences p:kotlin.text*/bazBaz = ""
/*p:foo(KotlinClass)*/k./*p:JavaClass p:foo.KotlinClass*/setBoo(2)
/*p:foo(KotlinClass)*/k./*p:JavaClass p:foo.KotlinClass p:foo.KotlinClass(getBOO) p:foo.KotlinClass(getBoo) p:foo.bar p:java.lang p:kotlin p:kotlin.annotation p:kotlin.collections p:kotlin.comparisons p:kotlin.io p:kotlin.jvm p:kotlin.ranges p:kotlin.sequences p:kotlin.text*/boo = 2
}
@@ -0,0 +1,5 @@
package top
/*p:top*/fun typeAliasUsage(a: /*p:top*/TypeAlias) {
/*p:top(Foo)*/a./*p:top.Foo*/prop
}