K2 IC: fix classifiers lookups

in particular nested classifiers and companions.

#KTIJ-24833 fixed
#KTIJ-24830 fixed
#KT-55195 fixed
This commit is contained in:
Ilya Chernikov
2024-02-27 16:28:08 +01:00
committed by Space Team
parent a823bfd600
commit 39b05a0a1c
61 changed files with 560 additions and 341 deletions
@@ -2,27 +2,19 @@
After chunkBuildStarted. Marked as dirty by Kotlin:
src/A.kt
Cleaning output files:
out/production/module/A$Companion.class
out/production/module/A.class
out/production/module/META-INF/module.kotlin_module
End of files
Compiling files:
src/A.kt
End of files
After build round. Marked as dirty by Kotlin:
src/companionExtension.kt
src/companionReferenceExplicit.kt
src/companionReferenceImplicit.kt
Exit code: ADDITIONAL_PASS_REQUIRED
------------------------------------------
Cleaning output files:
out/production/module/A$Companion.class
out/production/module/A.class
out/production/module/CompanionExtensionKt.class
out/production/module/CompanionReferenceExplicitKt.class
out/production/module/CompanionReferenceImplicitKt.class
out/production/module/META-INF/module.kotlin_module
End of files
Compiling files:
src/A.kt
src/companionExtension.kt
src/companionReferenceExplicit.kt
src/companionReferenceImplicit.kt
@@ -30,13 +22,12 @@ End of files
Exit code: ABORT
------------------------------------------
COMPILATION FAILED
Unresolved reference 'Companion'.
Unresolved reference 'x'.
Unresolved reference 'Companion'.
================ Step #2 =================
Cleaning output files:
out/production/module/A$AA.class
out/production/module/A.class
End of files
Compiling files:
src/A.kt
src/companionExtension.kt
@@ -2,6 +2,6 @@ package foo
import bar.*
/*p:foo*/fun <T : /*p:bar p:foo*/A?, B : /*p:bar p:foo*/Iterable</*p:bar p:foo*/Number>, C, D> test()
where C : /*p:bar p:foo*/Number, C : /*p:bar p:foo*/Comparable</*p:bar p:foo*/Number>, D : /*p:bar p:foo*/B
/*p:foo*/fun <T : /*p:bar p:foo*/A?, B : /*p:bar p:foo p:kotlin(Number) p:kotlin.collections*/Iterable</*p:bar p:foo p:kotlin*/Number>, C, D> test()
where C : /*p:bar p:foo p:kotlin*/Number, C : /*p:bar p:foo p:kotlin p:kotlin(Number)*/Comparable</*p:bar p:foo p:kotlin*/Number>, D : /*p:bar p:foo*/B
{}
@@ -6,10 +6,10 @@ import bar.*
val a = 1
var b = ""
val c: /*p:bar p:foo*/String
val c: /*p:bar p:foo p:foo.A*/String
get() = /*p:foo.A*/b
var d: /*p:bar p:foo*/String = "ddd"
var d: /*p:bar p:foo p:foo.A*/String = "ddd"
get() = field
set(v) { field = v }
@@ -27,7 +27,7 @@ import bar.*
val a = 1
companion object CO {
fun bar(a: /*p:bar p:foo*/Int) {}
fun bar(a: /*p:bar p:foo p:foo.A p:foo.A.B*/Int) {}
}
}
@@ -44,7 +44,7 @@ import bar.*
}
/*p:foo*/interface I {
var a: /*p:bar p:foo*/Int
var a: /*p:bar p:foo p:foo.I*/Int
fun foo()
class NI
@@ -64,8 +64,8 @@ import bar.*
val a = 1
fun 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:bar p:foo p:foo(E) p:foo.E p:foo.E(a) p:kotlin(Enum) p:kotlin.Enum p:kotlin.Enum(Companion) 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()
/*p:bar p:foo p:foo(E) p:foo.E p:foo.E(foo) p:kotlin(Enum) p:kotlin.Enum p:kotlin.Enum(Companion) p:kotlin.Enum.Companion*/X.foo()
}
}
@@ -8,43 +8,43 @@ import bar.*
/*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.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)*/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)*/A.Companion.baz()
/*p:foo*/A.O
/*p:foo p:foo.A.O(v)*/A.O.v = "OK"
/*p:bar p:foo p:foo.A(B) p:foo.A(Companion) p:foo.A.B(a)*/A.B().a
/*p:bar p:bar(bar) p:foo p:foo(bar) p:foo.A(B) p:foo.A(Companion) p:foo.A.B(CO) p:foo.A.B(bar) p:foo.A.B.CO(bar)*/A./*p:foo.A.B(CO)*/B.bar(1)
/*p:bar p:bar(bar) p:foo p:foo(bar) p:foo.A(B) p:foo.A(Companion) p:foo.A.B(CO) p:foo.A.B.CO(bar)*/A./*p:foo.A.B(CO)*/B./*p:foo.A.B*/CO.bar(1)
/*p:foo p:foo.A(Companion)*/A
/*p:bar p:foo p:foo.A(Companion) p:foo.A(a) p:foo.A.Companion(a)*/A.a
/*p:bar p:bar(baz) p:foo p:foo(baz) p:foo.A(Companion) p:foo.A(baz) p:foo.A.Companion(baz)*/A.baz()
/*p:bar p:foo p:foo.A(Companion)*/A./*p:foo.A*/Companion
/*p:bar p:bar(baz) p:foo p:foo(baz) p:foo.A(Companion) p:foo.A(baz) p:foo.A.Companion(baz)*/A./*p:foo.A*/Companion.baz()
/*p:bar p:foo p:foo.A(Companion) p:foo.A(O)*/A./*p:foo.A*/O
/*p:bar p:foo p:foo.A(Companion) p:foo.A(O) p:foo.A.O(v)*/A./*p:foo.A*/O.v = "OK"
/*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()
/*p:foo(I) p:foo.I(a)*/i.a = 2
/*p:bar p:foo p:foo.Obj(a)*/Obj.a
/*p:bar 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)*/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)*/iii.foo()
/*p:foo(I) p:foo.I(a)*/ii.a
/*p:foo(I) p:foo.I(foo)*/ii.foo()
/*p:bar p:foo p:foo.Obj(b)*/Obj.b
val iii = /*p:bar p:bar(bar) p:foo p:foo(I) p:foo(bar) p:foo.Obj(bar)*/Obj.bar()
/*p:foo(I) p:foo.I(foo)*/iii.foo()
/*p:bar p:foo p:foo.E(X)*/E.X
/*p:bar p:foo p:foo.E(X) p:foo.E(a)*/E.X.a
/*p:bar p:foo p:foo.E(Y) p:foo.E(foo)*/E.Y.foo()
/*p:bar p:foo p:foo.E(X)*/E./*p:foo(E)*/X
/*p:bar p:foo p:foo.E(X) p:foo.E(a)*/E./*p:foo(E)*/X.a
/*p:bar p:foo p:foo.E(Y) p:foo.E(foo)*/E./*p:foo(E)*/Y.foo()
/*p:bar p:foo p:foo.E(values) p:kotlin(Array)*/E.values()
/*p:bar p:foo p:foo.E(valueOf)*/E.valueOf("")
}
/*p:foo*/fun classifiers(
a: /*p:bar p:foo*/A,
ab: /*p:bar p:foo*/A.B,
ac: /*p:bar p:foo*/A.C,
abCo: /*p:bar p:foo*/A.B.CO,
aCompanion: /*p:bar p:foo*/A.Companion,
aO: /*p:bar p:foo*/A.O,
ab: /*p:bar p:bar.A(B) p:foo p:foo.A(B)*/A.B,
ac: /*p:bar p:bar.A(C) p:foo p:foo.A(C)*/A.C,
abCo: /*p:bar p:bar.A(B) p:bar.A.B(CO) p:foo p:foo.A(B) p:foo.A.B(CO)*/A.B.CO,
aCompanion: /*p:bar p:bar.A(Companion) p:foo p:foo.A(Companion)*/A.Companion,
aO: /*p:bar p:bar.A(O) p:foo p:foo.A(O)*/A.O,
i: /*p:bar p:foo*/I,
ni: /*p:bar p:foo*/I.NI,
ni: /*p:bar p:bar.I(NI) p:foo p:foo.I(NI)*/I.NI,
obj: /*p:bar p:foo*/Obj,
e: /*p:bar p:foo*/E
) {}
@@ -8,32 +8,32 @@ import bar.*
/*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.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)*/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)*/A.Companion.baz()
/*p:foo*/A.O
/*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:bar p:foo p:foo.A(B) p:foo.A(Companion) p:foo.A.B(a)*/A.B().a
/*p:bar p:bar(bar) p:foo p:foo(bar) p:foo.A(B) p:foo.A(Companion) p:foo.A.B(CO) p:foo.A.B(bar) p:foo.A.B.CO(bar)*/A./*p:foo.A.B(CO)*/B.bar(1)
/*p:bar p:bar(bar) p:foo p:foo(bar) p:foo.A(B) p:foo.A(Companion) p:foo.A.B(CO) p:foo.A.B.CO(bar)*/A./*p:foo.A.B(CO)*/B./*p:foo.A.B*/CO.bar(1)
/*p:foo p:foo.A(Companion)*/A
/*p:bar p:foo p:foo.A(Companion) p:foo.A(a) p:foo.A.Companion(a)*/A.a
/*p:bar p:bar(baz) p:foo p:foo(baz) p:foo.A(Companion) p:foo.A(baz) p:foo.A.Companion(baz)*/A.baz()
/*p:bar p:foo p:foo.A(Companion)*/A./*p:foo.A*/Companion
/*p:bar p:bar(baz) p:foo p:foo(baz) p:foo.A(Companion) p:foo.A(baz) p:foo.A.Companion(baz)*/A./*p:foo.A*/Companion.baz()
/*p:bar p:foo p:foo.A(Companion) p:foo.A(O)*/A./*p:foo.A*/O
/*p:bar p:foo p:foo.A(Companion) p:foo.A(O) p:foo.A.O(v)*/A./*p:foo.A*/O.v = "OK"
/*p:bar p:bar(vala) p:foo p:foo(vala) p:foo.A(Companion) p:foo.A(vala) p:foo.A.Companion(vala)*/A.vala
/*p:bar p:bar(vara) p:foo p:foo(vara) p:foo.A(Companion) p:foo.A(vara) p:foo.A.Companion(vara)*/A.vara()
/*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()
/*p:foo(I) p:foo.I(a)*/i.a = 2
/*p:bar p:foo p:foo.Obj(a)*/Obj.a
/*p:bar 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)*/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)*/iii.foo()
/*p:foo(I) p:foo.I(a)*/ii.a
/*p:foo(I) p:foo.I(foo)*/ii.foo()
/*p:bar p:foo p:foo.Obj(b)*/Obj.b
val iii = /*p:bar p:bar(bar) p:foo p:foo(I) p:foo(bar) p:foo.Obj(bar)*/Obj.bar()
/*p:foo(I) p:foo.I(foo)*/iii.foo()
/*p:bar p:foo p:foo.E(X)*/E.X
/*p:bar p:foo p:foo.E(X) p:foo.E(a)*/E.X.a
/*p:bar p:foo p:foo.E(Y) p:foo.E(foo)*/E.Y.foo()
/*p:bar p:foo p:foo.E(X)*/E./*p:foo(E)*/X
/*p:bar p:foo p:foo.E(X) p:foo.E(a)*/E./*p:foo(E)*/X.a
/*p:bar p:foo p:foo.E(Y) p:foo.E(foo)*/E./*p:foo(E)*/Y.foo()
/*p:bar p:foo p:foo.E(values) p:kotlin(Array)*/E.values()
/*p:bar p:foo p:foo.E(valueOf)*/E.valueOf("")
/*p:bar p:bar(foo) p:foo p:foo(foo) p:foo.E(foo)*/E.foo
@@ -42,13 +42,13 @@ import bar.*
/*p:foo*/fun classifiers(
a: /*p:bar p:foo*/A,
ab: /*p:bar p:foo*/A.B,
ac: /*p:bar p:foo*/A.C,
abCo: /*p:bar p:foo*/A.B.CO,
aCompanion: /*p:bar p:foo*/A.Companion,
aO: /*p:bar p:foo*/A.O,
ab: /*p:bar p:bar.A(B) p:foo p:foo.A(B)*/A.B,
ac: /*p:bar p:bar.A(C) p:foo p:foo.A(C)*/A.C,
abCo: /*p:bar p:bar.A(B) p:bar.A.B(CO) p:foo p:foo.A(B) p:foo.A.B(CO)*/A.B.CO,
aCompanion: /*p:bar p:bar.A(Companion) p:foo p:foo.A(Companion)*/A.Companion,
aO: /*p:bar p:bar.A(O) p:foo p:foo.A(O)*/A.O,
i: /*p:bar p:foo*/I,
ni: /*p:bar p:foo*/I.NI,
ni: /*p:bar p:bar.I(NI) p:foo p:foo.I(NI)*/I.NI,
obj: /*p:bar p:foo*/Obj,
e: /*p:bar p:foo*/E
) {}
@@ -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
a != c
na == a
na == null
/*p:foo.bar(A)*/a == c
/*p:foo.bar(A)*/a != c
/*p:foo.bar(A)*/na == /*p:foo.bar(A)*/a
/*p:foo.bar(A)*/na == null
/*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(A) p:foo.bar.A(compareTo)*/a > b
/*p:foo.bar(A) p:foo.bar.A(compareTo)*/a < b
/*p:foo.bar(A) p:foo.bar.A(compareTo)*/a >= b
/*p:foo.bar(A) p:foo.bar.A(compareTo)*/a <= b
/*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
/*p:foo.bar(A) p:foo.bar(compareTo) p:foo.bar.A(compareTo)*/a > c
/*p:foo.bar(A) p:foo.bar(compareTo) p:foo.bar.A(compareTo)*/a < c
/*p:foo.bar(A) p:foo.bar(compareTo) p:foo.bar.A(compareTo)*/a >= c
/*p:foo.bar(A) p:foo.bar(compareTo) p:foo.bar.A(compareTo)*/a <= c
}
@@ -3,16 +3,16 @@ package foo.bar
/*p:kotlin.reflect(KProperty)*/import kotlin.reflect.KProperty
/*p:foo.bar*/class D1 {
operator fun getValue(t: /*p:foo.bar*/Any?, p: /*p:foo.bar*/KProperty<*>) = 1
operator fun getValue(t: /*p:foo.bar*/Any?, p: /*p:foo.bar p:kotlin.reflect*/KProperty<*>) = 1
}
/*p:foo.bar*/operator fun /*p:foo.bar*/D1.setValue(t: /*p:foo.bar*/Any?, p: /*p:foo.bar*/KProperty<*>, v: /*p:foo.bar*/Int) {}
/*p:foo.bar*/operator fun /*p:foo.bar*/D1.setValue(t: /*p:foo.bar*/Any?, p: /*p:foo.bar p:kotlin.reflect*/KProperty<*>, v: /*p:foo.bar*/Int) {}
/*p:foo.bar(D2)*/open class D2 {
operator fun setValue(t: /*p:foo.bar*/Any?, p: /*p:foo.bar*/KProperty<*>, v: /*p:foo.bar*/Int) {}
operator fun setValue(t: /*p:foo.bar*/Any?, p: /*p:foo.bar p:kotlin.reflect*/KProperty<*>, v: /*p:foo.bar*/Int) {}
}
/*p:foo.bar*/operator fun /*p:foo.bar*/D2.getValue(t: /*p:foo.bar*/Any?, p: /*p:foo.bar*/KProperty<*>) = 1
/*p:foo.bar*/operator fun /*p:foo.bar*/D2.getValue(t: /*p:foo.bar*/Any?, p: /*p:foo.bar 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) = this
/*p:foo.bar*/class D3 : /*p:foo.bar*/D2() {
@@ -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/*p:foo.bar(A) p:foo.bar.A(inc)*/++
/*p:foo.bar(A) p:foo.bar.A(inc)*/++d
d/*p:foo.bar(A) p:foo.bar(dec) p:foo.bar.A(dec)*/--
/*p:foo.bar(A) p:foo.bar(dec) p:foo.bar.A(dec)*/--d
/*p:foo.bar(A)*/d/*p:foo.bar(A) 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(A) p:foo.bar(dec) p:foo.bar.A(dec)*/--
/*p:foo.bar(A) p:foo.bar(dec) p:foo.bar.A(dec)*/--/*p:foo.bar(A)*/d
/*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)*/!a
/*p:foo.bar(not) p:foo.bar.A(not)*/!/*p:foo.bar(A)*/a
// for val
/*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
/*p:foo.bar(A) p:foo.bar(times) p:foo.bar.A(times) p:foo.bar.A(timesAssign)*/a *= b
/*p:foo.bar(A) 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)*/d *= b
/*p:foo.bar(div) p:foo.bar(divAssign) p:foo.bar.A(div) p:foo.bar.A(divAssign)*/d /= b
/*p:foo.bar(A) p:foo.bar(times) p:foo.bar.A(times) p:foo.bar.A(timesAssign)*/d *= b
/*p:foo.bar(A) p:foo.bar(div) p:foo.bar(divAssign) p:foo.bar.A(div) p:foo.bar.A(divAssign)*/d /= b
}
@@ -1,15 +1,15 @@
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)*/a[1] = /*p:foo.bar.A(get)*/a[2]
/*p:foo.bar(A) p:foo.bar(set) p:foo.bar.A(set)*/a[1] = /*p:foo.bar(A) p:foo.bar.A(get)*/a[2]
/*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(contains)*/b in /*p:foo.bar(A)*/a
/*p:foo.bar(contains) p:foo.bar.A(contains) p:kotlin.Boolean(not)*/"s" !in /*p:foo.bar(A)*/a
/*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;
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) = /*p:foo.bar(A)*/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)*/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)*/na);
@@ -2,9 +2,9 @@ package foo
// From KT-10772 Problem with daemon on Idea 15.0.3 & 1-dev-25
/*p:foo*/fun <T> identity(): (/*p:foo*/T) -> /*p:foo*/T = null as (/*p:foo*/T) -> /*p:foo*/T
/*p:foo*/fun <T> identity(): /*p:kotlin(Function1)*/(/*p:foo*/T) -> /*p:foo*/T = null as /*p:kotlin(Function1)*/(/*p:foo*/T) -> /*p:foo*/T
/*p:foo*/fun <T> compute(f: () -> /*p:foo*/T) {
/*p:foo*/fun <T> compute(f: /*p:kotlin(Function0)*/() -> /*p:foo*/T) {
val result = /*p:kotlin(Function0) p:kotlin.Function0(invoke)*/f()
}
@@ -9,8 +9,8 @@ package foo
/*p:foo*/fun getListOfA() = /*p:foo p:foo(A) p:kotlin.collections(List)*/listOf(/*p:foo*/A())
/*p:foo*/fun getListOfB() = /*p:foo p:foo(B) p:kotlin.collections(List)*/listOf(/*p:foo*/B())
/*p:foo*/fun useListOfA(a: /*p:foo*/List</*p:foo*/A>) {}
/*p:foo*/fun useListOfB(b: /*p:foo*/List</*p:foo*/B>) {}
/*p:foo*/fun useListOfA(a: /*p:foo p:foo(A) p:kotlin.collections*/List</*p:foo*/A>) {}
/*p:foo*/fun useListOfB(b: /*p:foo p:foo(B) p:kotlin.collections*/List</*p:foo*/B>) {}
/*p:foo*/fun testInferredType() {
/*p:foo*/useListOfA(/*p:foo p:foo(A) p:kotlin.collections(List)*/getListOfA())
@@ -2,10 +2,10 @@ 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 lambdaConsumer(fn: /*p:foo(A) p:kotlin(Function1)*/(/*p:foo*/A)->/*p:foo*/Unit) {}
/*p:foo*/fun extensionConsumer(fn: /*p:foo p:kotlin(Function1)*/A.()->/*p:foo*/Unit) {}
/*p:foo*/fun testLambdaParameterType() {
/*p:foo*/lambdaConsumer /*p:foo(A) p:kotlin(Function1)*/{ it }
/*p:foo*/lambdaConsumer /*p:foo(A) p:kotlin(Function1)*/{ /*p:foo(A)*/it }
/*p:foo*/extensionConsumer /*p:foo(A) p:kotlin(Function1)*/{ this }
}
@@ -4,14 +4,14 @@ 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*/baz.B = /*p:bar p:baz(B) p:foo*/baz.B()
/*p:foo*/var b: /*p:bar p:bar.baz(B) p:baz(B) p:foo p:foo.baz(B)*/baz.B = /*p:bar p:baz(B) p:foo*/baz.B()
/*p:foo*/fun function(p: /*p:bar p:foo*/B): /*p:bar p:foo*/B {
/*p:foo*/a
/*p:bar(A) p:foo*/a
return /*p:bar p:foo*/B()
}
/*p:foo*/fun /*p:bar p:foo*/MyClass.extFunc(p: /**p:foo p:bar*//*p:bar p:foo*/Array</*p:bar p:foo*/B>, e: /*p:bar p:foo*/MyEnum, c: /**???*//*p:bar p:foo*/C): /*p:bar p:foo*/MyInterface {
/*p:bar p:foo p:foo.MyClass*/b
/*p:foo*/fun /*p:bar p:foo*/MyClass.extFunc(p: /**p:foo p:bar*//*p:bar p:bar(B) p:foo p:kotlin*/Array</*p:bar p:foo*/B>, e: /*p:bar p:foo*/MyEnum, c: /**???*//*p:bar p:baz p:foo*/C): /*p:bar p:foo*/MyInterface {
/*p:bar p:baz(B) p:foo p:foo.MyClass*/b
return /*p:bar p:foo p:foo.MyClass*/MyClass()
}
@@ -1,6 +1,6 @@
package foo.bar
/*p:foo.bar*/fun main(args: /*p:foo.bar*/Array</*p:foo.bar*/String>) {
val f: /*p:foo.bar*/Array</*p:foo.bar*/Int>
/*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
}
@@ -2,9 +2,9 @@ package foo
/*p:bar(C)*/import bar.C
/*p:bar(SAMInterface)*/import bar.SAMInterface
/*p:foo*/fun foo(c: /*p:foo*/C) {
/*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:foo*/fun foo(c: /*p:bar p:foo*/C) {
/*p:bar(C) p:bar.C(foo) p:foo(foo)*/c.foo()
/*p:bar(C) p:bar(SAMInterface) p:bar.C(foo) p:bar.SAMInterface(<SAM-CONSTRUCTOR>)*/c.foo /*p:kotlin(Function1)*/{ }
/*p:bar.C(bar) p:foo p:foo(bar)*/C.bar()
/*p:bar(SAMInterface) p:bar.C(bar) p:bar.SAMInterface(<SAM-CONSTRUCTOR>) p:foo*/C.bar /*p:kotlin(Function1)*/{}
@@ -2,6 +2,6 @@ package foo
import bar.*
/*p:foo*/fun <T : /*p:bar p:foo*/A?, B : /*p:bar p:foo*/Iterable</*p:bar p:foo*/Number>, C, D> test()
where C : /*p:bar p:foo*/Number, C : /*p:bar p:foo*/Comparable</*p:bar p:foo*/Number>, D : /*p:bar p:foo*/B
/*p:foo*/fun <T : /*p:bar p:foo*/A?, B : /*p:bar p:foo p:kotlin(Number) p:kotlin.collections*/Iterable</*p:bar p:foo p:kotlin*/Number>, C, D> test()
where C : /*p:bar p:foo p:kotlin*/Number, C : /*p:bar p:foo p:kotlin p:kotlin(Number)*/Comparable</*p:bar p:foo p:kotlin*/Number>, D : /*p:bar p:foo*/B
{}
@@ -6,10 +6,10 @@ import bar.*
val a = 1
var b = ""
val c: /*p:bar p:foo*/String
val c: /*p:bar p:foo p:foo.A*/String
get() = /*p:foo.A*/b
var d: /*p:bar p:foo*/String = "ddd"
var d: /*p:bar p:foo p:foo.A*/String = "ddd"
get() = field
set(v) { field = v }
@@ -27,7 +27,7 @@ import bar.*
val a = 1
companion object CO {
fun bar(a: /*p:bar p:foo*/Int) {}
fun bar(a: /*p:bar p:foo p:foo.A p:foo.A.B*/Int) {}
}
}
@@ -44,7 +44,7 @@ import bar.*
}
/*p:foo*/interface I {
var a: /*p:bar p:foo*/Int
var a: /*p:bar p:foo p:foo.I*/Int
fun foo()
class NI
@@ -64,8 +64,8 @@ import bar.*
val a = 1
fun 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:bar p:foo p:foo(E) p:foo.E p:foo.E(a) p:kotlin(Enum) p:kotlin.Enum p:kotlin.Enum(Companion) 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()
/*p:bar p:foo p:foo(E) p:foo.E p:foo.E(foo) p:kotlin(Enum) p:kotlin.Enum p:kotlin.Enum(Companion) p:kotlin.Enum.Companion*/X.foo()
}
}
@@ -8,43 +8,43 @@ import bar.*
/*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.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)*/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)*/A.Companion.baz()
/*p:foo*/A.O
/*p:foo p:foo.A.O(v)*/A.O.v = "OK"
/*p:bar p:foo p:foo.A(B) p:foo.A(Companion) p:foo.A.B(a)*/A.B().a
/*p:bar p:bar(bar) p:foo p:foo(bar) p:foo.A(B) p:foo.A(Companion) p:foo.A.B(CO) p:foo.A.B(bar) p:foo.A.B.CO(bar)*/A./*p:foo.A.B(CO)*/B.bar(1)
/*p:bar p:bar(bar) p:foo p:foo(bar) p:foo.A(B) p:foo.A(Companion) p:foo.A.B(CO) p:foo.A.B.CO(bar)*/A./*p:foo.A.B(CO)*/B./*p:foo.A.B*/CO.bar(1)
/*p:foo p:foo.A(Companion)*/A
/*p:bar p:foo p:foo.A(Companion) p:foo.A(a) p:foo.A.Companion(a)*/A.a
/*p:bar p:bar(baz) p:foo p:foo(baz) p:foo.A(Companion) p:foo.A(baz) p:foo.A.Companion(baz)*/A.baz()
/*p:bar p:foo p:foo.A(Companion)*/A./*p:foo.A*/Companion
/*p:bar p:bar(baz) p:foo p:foo(baz) p:foo.A(Companion) p:foo.A(baz) p:foo.A.Companion(baz)*/A./*p:foo.A*/Companion.baz()
/*p:bar p:foo p:foo.A(Companion) p:foo.A(O)*/A./*p:foo.A*/O
/*p:bar p:foo p:foo.A(Companion) p:foo.A(O) p:foo.A.O(v)*/A./*p:foo.A*/O.v = "OK"
/*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()
/*p:foo(I) p:foo.I(a)*/i.a = 2
/*p:bar p:foo p:foo.Obj(a)*/Obj.a
/*p:bar 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)*/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)*/iii.foo()
/*p:foo(I) p:foo.I(a)*/ii.a
/*p:foo(I) p:foo.I(foo)*/ii.foo()
/*p:bar p:foo p:foo.Obj(b)*/Obj.b
val iii = /*p:bar p:bar(bar) p:foo p:foo(I) p:foo(bar) p:foo.Obj(bar)*/Obj.bar()
/*p:foo(I) p:foo.I(foo)*/iii.foo()
/*p:bar p:foo p:foo.E(X)*/E.X
/*p:bar p:foo p:foo.E(X) p:foo.E(a)*/E.X.a
/*p:bar p:foo p:foo.E(Y) p:foo.E(foo)*/E.Y.foo()
/*p:bar p:foo p:foo.E(X)*/E./*p:foo(E)*/X
/*p:bar p:foo p:foo.E(X) p:foo.E(a)*/E./*p:foo(E)*/X.a
/*p:bar p:foo p:foo.E(Y) p:foo.E(foo)*/E./*p:foo(E)*/Y.foo()
/*p:bar p:foo p:foo.E(values) p:kotlin(Array)*/E.values()
/*p:bar p:foo p:foo.E(valueOf)*/E.valueOf("")
}
/*p:foo*/fun classifiers(
a: /*p:bar p:foo*/A,
ab: /*p:bar p:foo*/A.B,
ac: /*p:bar p:foo*/A.C,
abCo: /*p:bar p:foo*/A.B.CO,
aCompanion: /*p:bar p:foo*/A.Companion,
aO: /*p:bar p:foo*/A.O,
ab: /*p:bar p:bar.A(B) p:foo p:foo.A(B)*/A.B,
ac: /*p:bar p:bar.A(C) p:foo p:foo.A(C)*/A.C,
abCo: /*p:bar p:bar.A(B) p:bar.A.B(CO) p:foo p:foo.A(B) p:foo.A.B(CO)*/A.B.CO,
aCompanion: /*p:bar p:bar.A(Companion) p:foo p:foo.A(Companion)*/A.Companion,
aO: /*p:bar p:bar.A(O) p:foo p:foo.A(O)*/A.O,
i: /*p:bar p:foo*/I,
ni: /*p:bar p:foo*/I.NI,
ni: /*p:bar p:bar.I(NI) p:foo p:foo.I(NI)*/I.NI,
obj: /*p:bar p:foo*/Obj,
e: /*p:bar p:foo*/E
) {}
) {}
@@ -8,32 +8,32 @@ import bar.*
/*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.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)*/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)*/A.Companion.baz()
/*p:foo*/A.O
/*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:bar p:foo p:foo.A(B) p:foo.A(Companion) p:foo.A.B(a)*/A.B().a
/*p:bar p:bar(bar) p:foo p:foo(bar) p:foo.A(B) p:foo.A(Companion) p:foo.A.B(CO) p:foo.A.B(bar) p:foo.A.B.CO(bar)*/A./*p:foo.A.B(CO)*/B.bar(1)
/*p:bar p:bar(bar) p:foo p:foo(bar) p:foo.A(B) p:foo.A(Companion) p:foo.A.B(CO) p:foo.A.B.CO(bar)*/A./*p:foo.A.B(CO)*/B./*p:foo.A.B*/CO.bar(1)
/*p:foo p:foo.A(Companion)*/A
/*p:bar p:foo p:foo.A(Companion) p:foo.A(a) p:foo.A.Companion(a)*/A.a
/*p:bar p:bar(baz) p:foo p:foo(baz) p:foo.A(Companion) p:foo.A(baz) p:foo.A.Companion(baz)*/A.baz()
/*p:bar p:foo p:foo.A(Companion)*/A./*p:foo.A*/Companion
/*p:bar p:bar(baz) p:foo p:foo(baz) p:foo.A(Companion) p:foo.A(baz) p:foo.A.Companion(baz)*/A./*p:foo.A*/Companion.baz()
/*p:bar p:foo p:foo.A(Companion) p:foo.A(O)*/A./*p:foo.A*/O
/*p:bar p:foo p:foo.A(Companion) p:foo.A(O) p:foo.A.O(v)*/A./*p:foo.A*/O.v = "OK"
/*p:bar p:bar(vala) p:foo p:foo(vala) p:foo.A(Companion) p:foo.A(vala) p:foo.A.Companion(vala)*/A.vala
/*p:bar p:bar(vara) p:foo p:foo(vara) p:foo.A(Companion) p:foo.A(vara) p:foo.A.Companion(vara)*/A.vara()
/*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()
/*p:foo(I) p:foo.I(a)*/i.a = 2
/*p:bar p:foo p:foo.Obj(a)*/Obj.a
/*p:bar 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)*/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)*/iii.foo()
/*p:foo(I) p:foo.I(a)*/ii.a
/*p:foo(I) p:foo.I(foo)*/ii.foo()
/*p:bar p:foo p:foo.Obj(b)*/Obj.b
val iii = /*p:bar p:bar(bar) p:foo p:foo(I) p:foo(bar) p:foo.Obj(bar)*/Obj.bar()
/*p:foo(I) p:foo.I(foo)*/iii.foo()
/*p:bar p:foo p:foo.E(X)*/E.X
/*p:bar p:foo p:foo.E(X) p:foo.E(a)*/E.X.a
/*p:bar p:foo p:foo.E(Y) p:foo.E(foo)*/E.Y.foo()
/*p:bar p:foo p:foo.E(X)*/E./*p:foo(E)*/X
/*p:bar p:foo p:foo.E(X) p:foo.E(a)*/E./*p:foo(E)*/X.a
/*p:bar p:foo p:foo.E(Y) p:foo.E(foo)*/E./*p:foo(E)*/Y.foo()
/*p:bar p:foo p:foo.E(values) p:kotlin(Array)*/E.values()
/*p:bar p:foo p:foo.E(valueOf)*/E.valueOf("")
/*p:bar p:bar(foo) p:foo p:foo(foo) p:foo.E(foo)*/E.foo
@@ -42,13 +42,13 @@ import bar.*
/*p:foo*/fun classifiers(
a: /*p:bar p:foo*/A,
ab: /*p:bar p:foo*/A.B,
ac: /*p:bar p:foo*/A.C,
abCo: /*p:bar p:foo*/A.B.CO,
aCompanion: /*p:bar p:foo*/A.Companion,
aO: /*p:bar p:foo*/A.O,
ab: /*p:bar p:bar.A(B) p:foo p:foo.A(B)*/A.B,
ac: /*p:bar p:bar.A(C) p:foo p:foo.A(C)*/A.C,
abCo: /*p:bar p:bar.A(B) p:bar.A.B(CO) p:foo p:foo.A(B) p:foo.A.B(CO)*/A.B.CO,
aCompanion: /*p:bar p:bar.A(Companion) p:foo p:foo.A(Companion)*/A.Companion,
aO: /*p:bar p:bar.A(O) p:foo p:foo.A(O)*/A.O,
i: /*p:bar p:foo*/I,
ni: /*p:bar p:foo*/I.NI,
ni: /*p:bar p:bar.I(NI) p:foo p:foo.I(NI)*/I.NI,
obj: /*p:bar p:foo*/Obj,
e: /*p:bar p:foo*/E
) {}
@@ -0,0 +1,9 @@
/*p:<root>*/class MainClass {
companion object {
fun f() {
}
class T
}
}
@@ -0,0 +1,23 @@
/*p:<root>*/fun Explicit() /*p:MainClass(Companion)*/{
/*p:<root> p:MainClass(Companion)*/MainClass./*p:MainClass p:MainClass.Companion*/Companion
}
/*p:<root>*/fun ExplicitMethod() {
/*p:<root>*/MainClass./*p:MainClass*/Companion./*p:MainClass.Companion*/f()
}
/*p:<root>*/fun Implicit() /*p:MainClass(Companion)*/{
/*p:<root> p:MainClass(Companion)*/MainClass
}
/*p:<root>*/fun ImplicitMethod() {
/*p:<root>*/MainClass./*p:MainClass p:MainClass.Companion*/f()
}
/*p:<root>*/fun InstanceExplicit() {
val t = /*p:<root> p:MainClass(Companion)*/MainClass./*p:MainClass p:MainClass.Companion*/Companion
}
/*p:<root>*/fun Type(t: /*p:<root>*/MainClass./*p:MainClass*/Companion) {
}
@@ -0,0 +1,23 @@
/*p:<root>*/fun Explicit() {
/*p:<root> p:MainClass(Companion)*/MainClass./*p:MainClass*/Companion
}
/*p:<root>*/fun ExplicitMethod() {
/*p:<root> p:<root>(f) p:MainClass(Companion) p:MainClass(f) p:MainClass.Companion(f)*/MainClass./*p:MainClass*/Companion.f()
}
/*p:<root>*/fun Implicit() {
/*p:<root> p:MainClass(Companion)*/MainClass
}
/*p:<root>*/fun ImplicitMethod() {
/*p:<root> p:<root>(f) p:MainClass(Companion) p:MainClass(f) p:MainClass.Companion(f)*/MainClass.f()
}
/*p:<root>*/fun InstanceExplicit() {
val t = /*p:<root> p:MainClass(Companion)*/MainClass./*p:MainClass*/Companion
}
/*p:<root>*/fun Type(t: /*p:<root> p:MainClass(Companion)*/MainClass.Companion) {
}
@@ -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
a != c
na == a
na == null
/*p:foo.bar(A)*/a == c
/*p:foo.bar(A)*/a != c
/*p:foo.bar(A)*/na == /*p:foo.bar(A)*/a
/*p:foo.bar(A)*/na == null
/*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(A) p:foo.bar.A(compareTo)*/a > b
/*p:foo.bar(A) p:foo.bar.A(compareTo)*/a < b
/*p:foo.bar(A) p:foo.bar.A(compareTo)*/a >= b
/*p:foo.bar(A) p:foo.bar.A(compareTo)*/a <= b
/*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
/*p:foo.bar(A) p:foo.bar(compareTo) p:foo.bar.A(compareTo)*/a > c
/*p:foo.bar(A) p:foo.bar(compareTo) p:foo.bar.A(compareTo)*/a < c
/*p:foo.bar(A) p:foo.bar(compareTo) p:foo.bar.A(compareTo)*/a >= c
/*p:foo.bar(A) p:foo.bar(compareTo) p:foo.bar.A(compareTo)*/a <= c
}
@@ -3,16 +3,16 @@ package foo.bar
/*p:kotlin.reflect(KProperty)*/import kotlin.reflect.KProperty
/*p:foo.bar*/class D1 {
operator fun getValue(t: /*p:foo.bar*/Any?, p: /*p:foo.bar*/KProperty<*>) = 1
operator fun getValue(t: /*p:foo.bar*/Any?, p: /*p:foo.bar p:kotlin.reflect*/KProperty<*>) = 1
}
/*p:foo.bar*/operator fun /*p:foo.bar*/D1.setValue(t: /*p:foo.bar*/Any?, p: /*p:foo.bar*/KProperty<*>, v: /*p:foo.bar*/Int) {}
/*p:foo.bar*/operator fun /*p:foo.bar*/D1.setValue(t: /*p:foo.bar*/Any?, p: /*p:foo.bar p:kotlin.reflect*/KProperty<*>, v: /*p:foo.bar*/Int) {}
/*p:foo.bar(D2)*/open class D2 {
operator fun setValue(t: /*p:foo.bar*/Any?, p: /*p:foo.bar*/KProperty<*>, v: /*p:foo.bar*/Int) {}
operator fun setValue(t: /*p:foo.bar*/Any?, p: /*p:foo.bar p:kotlin.reflect*/KProperty<*>, v: /*p:foo.bar*/Int) {}
}
/*p:foo.bar*/operator fun /*p:foo.bar*/D2.getValue(t: /*p:foo.bar*/Any?, p: /*p:foo.bar*/KProperty<*>) = 1
/*p:foo.bar*/operator fun /*p:foo.bar*/D2.getValue(t: /*p:foo.bar*/Any?, p: /*p:foo.bar 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) = this
/*p:foo.bar*/class D3 : /*p:foo.bar*/D2() {
@@ -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/*p:foo.bar(A) p:foo.bar.A(inc)*/++
/*p:foo.bar(A) p:foo.bar.A(inc)*/++d
d/*p:foo.bar(A) p:foo.bar(dec) p:foo.bar.A(dec)*/--
/*p:foo.bar(A) p:foo.bar(dec) p:foo.bar.A(dec)*/--d
/*p:foo.bar(A)*/d/*p:foo.bar(A) 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(A) p:foo.bar(dec) p:foo.bar.A(dec)*/--
/*p:foo.bar(A) p:foo.bar(dec) p:foo.bar.A(dec)*/--/*p:foo.bar(A)*/d
/*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)*/!a
/*p:foo.bar(not) p:foo.bar.A(not)*/!/*p:foo.bar(A)*/a
// for val
/*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
/*p:foo.bar(A) p:foo.bar(times) p:foo.bar.A(times) p:foo.bar.A(timesAssign)*/a *= b
/*p:foo.bar(A) 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)*/d *= b
/*p:foo.bar(div) p:foo.bar(divAssign) p:foo.bar.A(div) p:foo.bar.A(divAssign)*/d /= b
/*p:foo.bar(A) p:foo.bar(times) p:foo.bar.A(times) p:foo.bar.A(timesAssign)*/d *= b
/*p:foo.bar(A) p:foo.bar(div) p:foo.bar(divAssign) p:foo.bar.A(div) p:foo.bar.A(divAssign)*/d /= b
}
@@ -1,15 +1,15 @@
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)*/a[1] = /*p:foo.bar.A(get)*/a[2]
/*p:foo.bar(A) p:foo.bar(set) p:foo.bar.A(set)*/a[1] = /*p:foo.bar(A) p:foo.bar.A(get)*/a[2]
/*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(contains)*/b in /*p:foo.bar(A)*/a
/*p:foo.bar(contains) p:foo.bar.A(contains) p:kotlin.Boolean(not)*/"s" !in /*p:foo.bar(A)*/a
/*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;
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) = /*p:foo.bar(A)*/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)*/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)*/na);
@@ -2,9 +2,9 @@ package foo
// From KT-10772 Problem with daemon on Idea 15.0.3 & 1-dev-25
/*p:foo*/fun <T> identity(): (/*p:foo*/T) -> /*p:foo*/T = null as (/*p:foo*/T) -> /*p:foo*/T
/*p:foo*/fun <T> identity(): /*p:kotlin(Function1)*/(/*p:foo*/T) -> /*p:foo*/T = null as /*p:kotlin(Function1)*/(/*p:foo*/T) -> /*p:foo*/T
/*p:foo*/fun <T> compute(f: () -> /*p:foo*/T) {
/*p:foo*/fun <T> compute(f: /*p:kotlin(Function0)*/() -> /*p:foo*/T) {
val result = /*p:kotlin(Function0) p:kotlin.Function0(invoke)*/f()
}
@@ -9,8 +9,8 @@ package foo
/*p:foo*/fun getListOfA() = /*p:foo p:foo(A) p:kotlin.collections(List)*/listOf(/*p:foo*/A())
/*p:foo*/fun getListOfB() = /*p:foo p:foo(B) p:kotlin.collections(List)*/listOf(/*p:foo*/B())
/*p:foo*/fun useListOfA(a: /*p:foo*/List</*p:foo*/A>) {}
/*p:foo*/fun useListOfB(b: /*p:foo*/List</*p:foo*/B>) {}
/*p:foo*/fun useListOfA(a: /*p:foo p:foo(A) p:kotlin.collections*/List</*p:foo*/A>) {}
/*p:foo*/fun useListOfB(b: /*p:foo p:foo(B) p:kotlin.collections*/List</*p:foo*/B>) {}
/*p:foo*/fun testInferredType() {
/*p:foo*/useListOfA(/*p:foo p:foo(A) p:kotlin.collections(List)*/getListOfA())
@@ -2,10 +2,10 @@ 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 lambdaConsumer(fn: /*p:foo(A) p:kotlin(Function1)*/(/*p:foo*/A)->/*p:foo*/Unit) {}
/*p:foo*/fun extensionConsumer(fn: /*p:foo p:kotlin(Function1)*/A.()->/*p:foo*/Unit) {}
/*p:foo*/fun testLambdaParameterType() {
/*p:foo*/lambdaConsumer /*p:foo(A) p:kotlin(Function1)*/{ it }
/*p:foo*/lambdaConsumer /*p:foo(A) p:kotlin(Function1)*/{ /*p:foo(A)*/it }
/*p:foo*/extensionConsumer /*p:foo(A) p:kotlin(Function1)*/{ this }
}
@@ -6,40 +6,40 @@ import baz.*
/*p:foo*/fun usages() {
val c = /*p:bar*/C()
/*p:bar.C(field)*/c.field
/*p:bar.C(field)*/c.field = 2
/*p:bar.C(func)*/c.func()
/*p:bar(C.B) p:bar.C(B)*/c.B()
/*p:bar(C) p:bar.C(field)*/c.field
/*p:bar(C) p:bar.C(field)*/c.field = 2
/*p:bar(C) p:bar.C(func)*/c.func()
/*p:bar(C) p:bar.C(B)*/c.B()
/*p:bar.C(sfield) p:baz p:foo*/C.sfield
/*p:bar.C(sfield) p:baz p:foo*/C.sfield = "new"
/*p:bar.C(sfunc) p:baz p:foo*/C.sfunc()
/*p:bar p:bar.C(S) p:baz p:foo*/C.S()
/*p:bar.C(S) p:baz p:foo*/C.S()
// inherited from I
/*p:bar.C(ifunc)*/c.ifunc()
/*p:bar(C) p:bar.C(ifunc)*/c.ifunc()
/*p:bar.C(isfield) p:baz p:foo*/C.isfield
// expected error: Unresolved reference: IS
/*p:bar.C(IS) p:baz p:baz(IS) p:foo p:foo(IS)*/C.IS()
val i: /*p:baz p:foo*/I = c
/*p:foo.I(ifunc)*/i.ifunc()
val i: /*p:baz p:foo*/I = /*p:bar(C)*/c
/*p:foo(I) p:foo.I(ifunc)*/i.ifunc()
/*p:baz p:foo p:foo.I(isfield)*/I.isfield
/*p:baz p:foo p:foo.I(IS)*/I.IS()
/*p:baz p:baz.E(F) p:foo*/E.F
/*p:baz p:baz.E(F) p:baz.E(field) p:foo*/E.F.field
/*p:baz p:baz.E(S) p:baz.E(func) p:foo*/E.S.func()
/*p:baz p:baz.E(F) p:foo*/E./*p:baz(E)*/F
/*p:baz p:baz.E(F) p:baz.E(field) p:foo*/E./*p:baz(E)*/F.field
/*p:baz p:baz.E(S) p:baz.E(func) p:foo*/E./*p:baz(E)*/S.func()
}
fun classifiers(
c: /*p:baz p:foo*/C,
b: /*p:baz p:foo*/C.B,
s: /*p:baz p:foo*/C.S,
cis: /*p:baz p:foo*/C.IS,
c: /*p:bar p:baz p:foo*/C,
b: /*p:bar.C(B) p:baz p:baz.C(B) p:foo p:foo.C(B)*/C.B,
s: /*p:bar.C(S) p:baz p:baz.C(S) p:foo p:foo.C(S)*/C.S,
cis: /*p:bar p:baz p:baz.C(IS) p:foo p:foo.C(IS)*/C.IS,
i: /*p:baz p:foo*/I,
iis: /*p:baz p:foo*/I.IS,
iis: /*p:baz p:baz.I(IS) p:foo p:foo.I(IS)*/I.IS,
e: /*p:baz p:foo*/E
) {}
@@ -1,6 +1,6 @@
package foo
/*p:foo(A)*/open class A {
/*p:kotlin.jvm(JvmName)*/@/*p:foo*/JvmName("g")
/*p:kotlin.jvm(JvmName)*/@/*p:foo p:kotlin.jvm*/JvmName("g")
fun f() {}
}
@@ -1,6 +1,6 @@
package foo
/*p:foo(A)*/open class A {
/*p:kotlin.jvm(JvmName)*/@/*p:foo*/JvmName("h")
/*p:kotlin.jvm(JvmName)*/@/*p:foo p:kotlin.jvm*/JvmName("h")
fun f() {}
}
@@ -1,5 +1,5 @@
package foo
/*p:foo*/fun useAChild(a: /*p:foo*/AChild) {
/*p:foo.A(f) p:foo.AChild(f)*/a.f()
/*p:foo(AChild) p:foo.A(f) p:foo.AChild(f)*/a.f()
}
@@ -0,0 +1,9 @@
/*p:<root>*/class MainClass {
companion object Name {
fun f() {
}
class T
}
}
@@ -0,0 +1,23 @@
/*p:<root>*/fun Explicit() /*p:MainClass(Name)*/{
/*p:<root> p:MainClass(Name)*/MainClass./*p:MainClass p:MainClass.Name*/Name
}
/*p:<root>*/fun ExplicitMethod() {
/*p:<root>*/MainClass./*p:MainClass*/Name./*p:MainClass.Name*/f()
}
/*p:<root>*/fun Implicit() /*p:MainClass(Name)*/{
/*p:<root> p:MainClass(Name)*/MainClass
}
/*p:<root>*/fun ImplicitMethod() {
/*p:<root>*/MainClass./*p:MainClass p:MainClass.Name*/f()
}
/*p:<root>*/fun InstanceExplicit() {
val t = /*p:<root> p:MainClass(Name)*/MainClass./*p:MainClass p:MainClass.Name*/Name
}
/*p:<root>*/fun Type(t: /*p:<root>*/MainClass./*p:MainClass*/Name) {
}
@@ -0,0 +1,23 @@
/*p:<root>*/fun Explicit() {
/*p:<root> p:MainClass(Name)*/MainClass./*p:MainClass*/Name
}
/*p:<root>*/fun ExplicitMethod() {
/*p:<root> p:<root>(f) p:MainClass(Name) p:MainClass.Name(f)*/MainClass./*p:MainClass*/Name.f()
}
/*p:<root>*/fun Implicit() {
/*p:<root> p:MainClass(Name)*/MainClass
}
/*p:<root>*/fun ImplicitMethod() {
/*p:<root> p:<root>(f) p:MainClass(Name) p:MainClass(f) p:MainClass.Name(f)*/MainClass.f()
}
/*p:<root>*/fun InstanceExplicit() {
val t = /*p:<root> p:MainClass(Name)*/MainClass./*p:MainClass*/Name
}
/*p:<root>*/fun Type(t: /*p:<root> p:MainClass(Name)*/MainClass.Name) {
}
@@ -0,0 +1,11 @@
/*p:<root>*/class MainClass {
class NestedClass {
object A {
class B {
object F {
val x = 42
}
}
}
}
}
@@ -0,0 +1,5 @@
==== INITIAL BUILD ====
Compiling files:
src/MainClass.kt
src/usage.kt
Exit code: OK
@@ -0,0 +1,7 @@
/*p:<root>*/fun usageAsCall(): /*p:<root>*/Int /*p:kotlin(Nothing)*/{
val f = /*p:<root> p:MainClass.NestedClass.A.B(F) 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*/MainClass./*p:MainClass*/NestedClass./*p:MainClass.NestedClass*/A./*p:MainClass.NestedClass.A*/B./*p:MainClass.NestedClass.A.B*/F
/*p:kotlin(Nothing)*/return /*p:<root> 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*/MainClass./*p:MainClass*/NestedClass./*p:MainClass.NestedClass*/A./*p:MainClass.NestedClass.A*/B./*p:MainClass.NestedClass.A.B*/F./*p:MainClass.NestedClass.A.B.F*/x
}
/*p:<root>*/fun usageAsType(f: /*p:<root>*/MainClass./*p:MainClass*/NestedClass./*p:MainClass.NestedClass*/A./*p:MainClass.NestedClass.A*/B./*p:MainClass.NestedClass.A.B*/F) {}
@@ -0,0 +1,7 @@
/*p:<root>*/fun usageAsCall(): /*p:<root>*/Int {
val f = /*p:<root> p:MainClass(NestedClass) p:MainClass.NestedClass(A) p:MainClass.NestedClass.A(B) p:MainClass.NestedClass.A.B(F)*/MainClass.NestedClass./*p:MainClass.NestedClass*/A.B./*p:MainClass.NestedClass.A.B*/F
return /*p:<root> p:MainClass(NestedClass) p:MainClass.NestedClass(A) p:MainClass.NestedClass.A(B) p:MainClass.NestedClass.A.B(F) p:MainClass.NestedClass.A.B.F(x)*/MainClass.NestedClass./*p:MainClass.NestedClass*/A.B./*p:MainClass.NestedClass.A.B*/F.x
}
/*p:<root>*/fun usageAsType(f: /*p:<root> p:MainClass(NestedClass) p:MainClass.NestedClass(A) p:MainClass.NestedClass.A(B) p:MainClass.NestedClass.A.B(F)*/MainClass.NestedClass.A.B.F) = /*p:MainClass.NestedClass.A.B(F)*/f
@@ -4,14 +4,14 @@ 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*/baz.B = /*p:bar p:baz(B) p:foo*/baz.B()
/*p:foo*/var b: /*p:bar p:bar.baz(B) p:baz(B) p:foo p:foo.baz(B)*/baz.B = /*p:bar p:baz(B) p:foo*/baz.B()
/*p:foo*/fun function(p: /*p:bar p:foo*/B): /*p:bar p:foo*/B {
/*p:foo*/a
/*p:bar(A) p:foo*/a
return /*p:bar p:foo*/B()
}
/*p:foo*/fun /*p:bar p:foo*/MyClass.extFunc(p: /**p:foo p:bar*//*p:bar p:foo*/Array</*p:bar p:foo*/B>, e: /*p:bar p:foo*/MyEnum, c: /*p:bar p:foo*/C): /*p:bar p:foo*/MyInterface {
/*p:bar p:foo p:foo.MyClass*/b
/*p:foo*/fun /*p:bar p:foo*/MyClass.extFunc(p: /**p:foo p:bar*//*p:bar p:bar(B) p:foo p:kotlin*/Array</*p:bar p:foo*/B>, e: /*p:bar p:foo*/MyEnum, c: /*p:bar p:baz p:foo*/C): /*p:bar p:foo*/MyInterface {
/*p:bar p:baz(B) p:foo p:foo.MyClass*/b
return /*p:bar p:foo p:foo.MyClass*/MyClass()
}
@@ -1,6 +1,6 @@
package foo.bar
/*p:foo.bar*/fun main(args: /*p:foo.bar*/Array</*p:foo.bar*/String>) {
val f: /*p:foo.bar*/Array</*p:foo.bar*/Int>
/*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
}
@@ -2,7 +2,7 @@ package foo
/*p:<root>(JavaClass)*/import JavaClass
/*p:foo*/class KotlinClass : /*p:foo*/JavaClass() {
/*p:foo*/class KotlinClass : /*p:<root> p:foo*/JavaClass() {
override fun getFoo() = 2
fun setFoo(i: /*p:foo*/Int) {}
}
@@ -7,24 +7,24 @@ package foo.bar
val j = /*p:<root>*/JavaClass()
val k = /*p:foo*/KotlinClass()
/*p:JavaClass(getFoo)*/j.getFoo()
/*p:JavaClass(setFoo) p:foo.bar(setFoo)*/j.setFoo(2)
/*p:JavaClass(foo)*/j.foo = 2
/*p:JavaClass(foo)*/j.foo
/*p:JavaClass(bar)*/j.bar
/*p:JavaClass(bar)*/j.bar = ""
/*p:JavaClass(bazBaz)*/j.bazBaz
/*p:JavaClass(bazBaz)*/j.bazBaz = ""
/*p:JavaClass(setBoo)*/j.setBoo(2)
/*p:JavaClass(boo) p:foo.bar(boo)*/j.boo = 2
/*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)*/k.bazBaz
/*p:JavaClass(bazBaz) p:foo.KotlinClass(bazBaz)*/k.bazBaz = ""
/*p:JavaClass(setBoo) p:foo.KotlinClass(setBoo)*/k.setBoo(2)
/*p:foo.KotlinClass(boo) p:foo.bar(boo)*/k.boo = 2
/*p:<root>(JavaClass) p:JavaClass(getFoo)*/j.getFoo()
/*p:<root>(JavaClass) p:JavaClass(setFoo) p:foo.bar(setFoo)*/j.setFoo(2)
/*p:<root>(JavaClass) p:JavaClass(foo)*/j.foo = 2
/*p:<root>(JavaClass) p:JavaClass(foo)*/j.foo
/*p:<root>(JavaClass) p:JavaClass(bar)*/j.bar
/*p:<root>(JavaClass) p:JavaClass(bar)*/j.bar = ""
/*p:<root>(JavaClass) p:JavaClass(bazBaz)*/j.bazBaz
/*p:<root>(JavaClass) p:JavaClass(bazBaz)*/j.bazBaz = ""
/*p:<root>(JavaClass) p:JavaClass(setBoo)*/j.setBoo(2)
/*p:<root>(JavaClass) p:JavaClass(boo) p:foo.bar(boo)*/j.boo = 2
/*p:foo(KotlinClass) p:foo.KotlinClass(getFoo)*/k.getFoo() // getFoo may be an inner class in JavaClass
/*p:foo(KotlinClass) p:foo.KotlinClass(setFoo)*/k.setFoo(2)
/*p:foo(KotlinClass) p:foo.KotlinClass(foo)*/k.foo = 2
/*p:foo(KotlinClass) p:foo.KotlinClass(foo)*/k.foo
/*p:JavaClass(bar) p:foo(KotlinClass) p:foo.KotlinClass(bar)*/k.bar
/*p:JavaClass(bar) p:foo(KotlinClass) p:foo.KotlinClass(bar)*/k.bar = ""
/*p:JavaClass(bazBaz) p:foo(KotlinClass) p:foo.KotlinClass(bazBaz)*/k.bazBaz
/*p:JavaClass(bazBaz) p:foo(KotlinClass) p:foo.KotlinClass(bazBaz)*/k.bazBaz = ""
/*p:JavaClass(setBoo) p:foo(KotlinClass) p:foo.KotlinClass(setBoo)*/k.setBoo(2)
/*p:foo(KotlinClass) 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:top.Foo(prop) p:top.TypeAlias(prop)*/a.prop
/*p:top(TypeAlias) p:top.Foo(prop) p:top.TypeAlias(prop)*/a.prop
}
@@ -0,0 +1,33 @@
================ Step #1 =================
After chunkBuildStarted. Marked as dirty by Kotlin:
src/A.kt
src/useAbar.kt
src/useAfoo.kt
Cleaning output files:
out/production/module/META-INF/module.kotlin_module
out/production/module/foo/A$Companion.class
out/production/module/foo/A.class
out/production/module/use/UseAbarKt.class
out/production/module/use/UseAfooKt.class
End of files
Compiling files:
src/A.kt
src/useAbar.kt
src/useAfoo.kt
End of files
Exit code: ABORT
------------------------------------------
COMPILATION FAILED
Unresolved reference 'bar'.
Unresolved reference 'foo'.
================ Step #2 =================
Compiling files:
src/A.kt
src/useAbar.kt
src/useAfoo.kt
End of files
Exit code: OK
------------------------------------------
@@ -2,25 +2,16 @@
After chunkBuildStarted. Marked as dirty by Kotlin:
src/A.kt
Cleaning output files:
out/production/module/META-INF/module.kotlin_module
out/production/module/foo/A$Companion.class
out/production/module/foo/A.class
End of files
Compiling files:
src/A.kt
End of files
After build round. Marked as dirty by Kotlin:
src/getACompanion.kt
src/getACompanionShort.kt
src/useACompanionImplicitly.kt
src/useACompanionShortImplicitly.kt
src/useAbarWithImplicitReceiver.kt
src/useAfooWithImplicitReceiver.kt
Exit code: ADDITIONAL_PASS_REQUIRED
------------------------------------------
Cleaning output files:
out/production/module/META-INF/module.kotlin_module
out/production/module/foo/A$Companion.class
out/production/module/foo/A.class
out/production/module/use/GetACompanionKt.class
out/production/module/use/GetACompanionShortKt.class
out/production/module/use/UseACompanionImplicitlyKt.class
@@ -29,6 +20,7 @@ Cleaning output files:
out/production/module/use/UseAfooWithImplicitReceiverKt.class
End of files
Compiling files:
src/A.kt
src/getACompanion.kt
src/getACompanionShort.kt
src/useACompanionImplicitly.kt
@@ -39,12 +31,12 @@ End of files
Exit code: ABORT
------------------------------------------
COMPILATION FAILED
Unresolved reference 'Companion'.
Classifier 'class A : Any' does not have a companion object, so it cannot be used as an expression.
Unresolved reference 'bar'.
================ Step #2 =================
Cleaning output files:
out/production/module/foo/A.class
End of files
Compiling files:
src/A.kt
src/getACompanion.kt