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:
committed by
Space Team
parent
684d0b8690
commit
1989e8f094
@@ -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)*/{}
|
||||
}
|
||||
+4
-4
@@ -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
|
||||
+7
@@ -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
|
||||
{}
|
||||
+21
@@ -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'.
|
||||
+69
@@ -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()
|
||||
}
|
||||
}
|
||||
+50
@@ -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
|
||||
) {}
|
||||
+54
@@ -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
|
||||
) {}
|
||||
+18
@@ -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
|
||||
}
|
||||
+35
@@ -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
|
||||
+30
@@ -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()
|
||||
+24
@@ -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
|
||||
}
|
||||
+16
@@ -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);
|
||||
}
|
||||
+15
@@ -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
|
||||
}
|
||||
}
|
||||
+19
@@ -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())
|
||||
}
|
||||
Vendored
+11
@@ -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() {}
|
||||
}
|
||||
+6
@@ -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() {}
|
||||
}
|
||||
+5
@@ -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()
|
||||
}
|
||||
+49
@@ -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
|
||||
}
|
||||
+17
@@ -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
|
||||
}
|
||||
Vendored
+8
@@ -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) {}
|
||||
}
|
||||
+8
-16
@@ -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
|
||||
+21
@@ -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'.
|
||||
+30
@@ -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
|
||||
}
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
package top
|
||||
|
||||
/*p:top*/fun typeAliasUsage(a: /*p:top*/TypeAlias) {
|
||||
/*p:top(Foo)*/a./*p:top.Foo*/prop
|
||||
}
|
||||
Reference in New Issue
Block a user