Support basic light-classes basic with FIR for CLI
This commit is contained in:
@@ -0,0 +1,30 @@
|
||||
// FILE: K1.kt
|
||||
class K2: J1() {
|
||||
fun bar() {
|
||||
foo()
|
||||
baz()
|
||||
|
||||
superClass()
|
||||
superI()
|
||||
}
|
||||
}
|
||||
|
||||
// FILE: J1.java
|
||||
public class J1 extends KFirst {
|
||||
void baz() {}
|
||||
}
|
||||
|
||||
// FILE: K2.kt
|
||||
open class KFirst : SuperClass(), SuperI {
|
||||
fun foo() {
|
||||
}
|
||||
}
|
||||
|
||||
// FILE: K3.kt
|
||||
abstract class SuperClass {
|
||||
fun superClass() {}
|
||||
}
|
||||
|
||||
interface SuperI {
|
||||
fun superI() {}
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
FILE: K1.kt
|
||||
public final class K2 : R|J1| {
|
||||
public constructor(): R|K2| {
|
||||
super<R|J1|>()
|
||||
}
|
||||
|
||||
public final fun bar(): R|kotlin/Unit| {
|
||||
this@R|/KFirst|.R|/KFirst.foo|()
|
||||
this@R|/J1|.R|/J1.baz|()
|
||||
this@R|/SuperClass|.R|/SuperClass.superClass|()
|
||||
this@R|/SuperI|.R|/SuperI.superI|()
|
||||
}
|
||||
|
||||
}
|
||||
FILE: K2.kt
|
||||
public open class KFirst : R|SuperClass|, R|SuperI| {
|
||||
public constructor(): R|KFirst| {
|
||||
super<R|SuperClass|>()
|
||||
}
|
||||
|
||||
public final fun foo(): R|kotlin/Unit| {
|
||||
}
|
||||
|
||||
}
|
||||
FILE: K3.kt
|
||||
public abstract class SuperClass : R|kotlin/Any| {
|
||||
public constructor(): R|SuperClass| {
|
||||
super<R|kotlin/Any|>()
|
||||
}
|
||||
|
||||
public final fun superClass(): R|kotlin/Unit| {
|
||||
}
|
||||
|
||||
}
|
||||
public abstract interface SuperI : R|kotlin/Any| {
|
||||
public open fun superI(): R|kotlin/Unit| {
|
||||
}
|
||||
|
||||
}
|
||||
+37
@@ -0,0 +1,37 @@
|
||||
// FILE: K1.kt
|
||||
class KSub : J1()
|
||||
|
||||
fun main(k: KSub, vString: SuperClass<String>.NestedInSuperClass, vInt: SuperClass<Int>.NestedInSuperClass) {
|
||||
k.getImpl().nestedI(vString)
|
||||
|
||||
// TODO: Support parametrisized inner classes
|
||||
k.getImpl().nestedI(vInt)
|
||||
k.getNestedSubClass().nested("")
|
||||
k.getNestedSubClass().nested(1)
|
||||
}
|
||||
|
||||
// FILE: J1.java
|
||||
public class J1 extends KFirst {
|
||||
|
||||
public class NestedSubClass extends NestedInSuperClass {}
|
||||
public abstract class NestedIImpl implements NestedInI<NestedInSuperClass> {}
|
||||
|
||||
public NestedIImpl getImpl() { return null; }
|
||||
public NestedSubClass getNestedSubClass() { return null; }
|
||||
}
|
||||
|
||||
// FILE: K2.kt
|
||||
open class KFirst : SuperClass<String>(), SuperI<Int>
|
||||
|
||||
// FILE: K3.kt
|
||||
abstract class SuperClass<T> {
|
||||
inner open class NestedInSuperClass {
|
||||
fun nested(x: T) {}
|
||||
}
|
||||
}
|
||||
|
||||
interface SuperI<E> {
|
||||
interface NestedInI<F> {
|
||||
fun nestedI(f: F) {}
|
||||
}
|
||||
}
|
||||
+45
@@ -0,0 +1,45 @@
|
||||
FILE: K1.kt
|
||||
public final class KSub : R|J1| {
|
||||
public constructor(): R|KSub| {
|
||||
super<R|J1|>()
|
||||
}
|
||||
|
||||
}
|
||||
public final fun main(k: R|KSub|, vString: R|SuperClass.NestedInSuperClass<kotlin/String>|, vInt: R|SuperClass.NestedInSuperClass<kotlin/Int>|): R|kotlin/Unit| {
|
||||
R|<local>/k|.R|/J1.getImpl|().R|FakeOverride</SuperI.NestedInI.nestedI: R|kotlin/Unit|>|(R|<local>/vString|)
|
||||
R|<local>/k|.R|/J1.getImpl|().R|FakeOverride</SuperI.NestedInI.nestedI: R|kotlin/Unit|>|(R|<local>/vInt|)
|
||||
R|<local>/k|.R|/J1.getNestedSubClass|().<Inapplicable(INAPPLICABLE): [/SuperClass.NestedInSuperClass.nested]>#(String())
|
||||
R|<local>/k|.R|/J1.getNestedSubClass|().<Inapplicable(INAPPLICABLE): [/SuperClass.NestedInSuperClass.nested]>#(Int(1))
|
||||
}
|
||||
FILE: K2.kt
|
||||
public open class KFirst : R|SuperClass<kotlin/String>|, R|SuperI<kotlin/Int>| {
|
||||
public constructor(): R|KFirst| {
|
||||
super<R|SuperClass<kotlin/String>|>()
|
||||
}
|
||||
|
||||
}
|
||||
FILE: K3.kt
|
||||
public abstract class SuperClass<T> : R|kotlin/Any| {
|
||||
public constructor<T>(): R|SuperClass<T>| {
|
||||
super<R|kotlin/Any|>()
|
||||
}
|
||||
|
||||
public open inner class NestedInSuperClass : R|kotlin/Any| {
|
||||
public constructor(): R|SuperClass.NestedInSuperClass| {
|
||||
super<R|kotlin/Any|>()
|
||||
}
|
||||
|
||||
public final fun nested(x: R|T|): R|kotlin/Unit| {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
public abstract interface SuperI<E> : R|kotlin/Any| {
|
||||
public abstract interface NestedInI<F> : R|kotlin/Any| {
|
||||
public open fun nestedI(f: R|F|): R|kotlin/Unit| {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
// FILE: K1.kt
|
||||
open class KFirst() {
|
||||
fun foo() {
|
||||
}
|
||||
}
|
||||
|
||||
// FILE: J1.java
|
||||
public class J1 extends KFirst {
|
||||
void baz() {}
|
||||
}
|
||||
|
||||
// FILE: K2.kt
|
||||
class K2: J1() {
|
||||
fun bar() {
|
||||
foo()
|
||||
baz()
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
FILE: K1.kt
|
||||
public open class KFirst : R|kotlin/Any| {
|
||||
public constructor(): R|KFirst| {
|
||||
super<R|kotlin/Any|>()
|
||||
}
|
||||
|
||||
public final fun foo(): R|kotlin/Unit| {
|
||||
}
|
||||
|
||||
}
|
||||
FILE: K2.kt
|
||||
public final class K2 : R|J1| {
|
||||
public constructor(): R|K2| {
|
||||
super<R|J1|>()
|
||||
}
|
||||
|
||||
public final fun bar(): R|kotlin/Unit| {
|
||||
this@R|/KFirst|.R|/KFirst.foo|()
|
||||
this@R|/J1|.R|/J1.baz|()
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
// FILE: K1.kt
|
||||
open class KFirst<T: java.io.Serializable>() {
|
||||
fun foo(t: T): T = t
|
||||
}
|
||||
|
||||
// FILE: J1.java
|
||||
public class J1 extends KFirst<Integer> {
|
||||
void baz() {}
|
||||
}
|
||||
|
||||
// FILE: K2.kt
|
||||
class K2: J1() {
|
||||
fun bar() {
|
||||
foo(1)
|
||||
baz()
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
FILE: K1.kt
|
||||
public open class KFirst<T : R|java/io/Serializable|> : R|kotlin/Any| {
|
||||
public constructor<T : R|java/io/Serializable|>(): R|KFirst<T>| {
|
||||
super<R|kotlin/Any|>()
|
||||
}
|
||||
|
||||
public final fun foo(t: R|T|): R|T| {
|
||||
^foo R|<local>/t|
|
||||
}
|
||||
|
||||
}
|
||||
FILE: K2.kt
|
||||
public final class K2 : R|J1| {
|
||||
public constructor(): R|K2| {
|
||||
super<R|J1|>()
|
||||
}
|
||||
|
||||
public final fun bar(): R|kotlin/Unit| {
|
||||
this@R|/KFirst|.R|FakeOverride</KFirst.foo: R|kotlin/Int|>|(Int(1))
|
||||
this@R|/J1|.R|/J1.baz|()
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
// FILE: K1.kt
|
||||
class KotlinClass
|
||||
|
||||
// FILE: JavaClass.java
|
||||
public class JavaClass {
|
||||
public static void baz(KotlinClass k) {}
|
||||
}
|
||||
|
||||
// FILE: K2.kt
|
||||
fun main() {
|
||||
JavaClass.baz(KotlinClass())
|
||||
JavaClass.baz("")
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
FILE: K1.kt
|
||||
public final class KotlinClass : R|kotlin/Any| {
|
||||
public constructor(): R|KotlinClass| {
|
||||
super<R|kotlin/Any|>()
|
||||
}
|
||||
|
||||
}
|
||||
FILE: K2.kt
|
||||
public final fun main(): R|kotlin/Unit| {
|
||||
Q|JavaClass|.R|/JavaClass.baz|(R|/KotlinClass.KotlinClass|())
|
||||
Q|JavaClass|.<Inapplicable(INAPPLICABLE): [/JavaClass.baz]>#(String())
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
// FILE: K1.kt
|
||||
class KotlinClass<T>
|
||||
|
||||
// FILE: JavaClass.java
|
||||
public class JavaClass {
|
||||
public static void baz(KotlinClass<Integer> k) {}
|
||||
}
|
||||
|
||||
// FILE: K2.kt
|
||||
fun main() {
|
||||
JavaClass.baz(KotlinClass())
|
||||
JavaClass.baz(KotlinClass<Int>())
|
||||
JavaClass.baz(KotlinClass<String>())
|
||||
JavaClass.baz("")
|
||||
}
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
FILE: K1.kt
|
||||
public final class KotlinClass<T> : R|kotlin/Any| {
|
||||
public constructor<T>(): R|KotlinClass<T>| {
|
||||
super<R|kotlin/Any|>()
|
||||
}
|
||||
|
||||
}
|
||||
FILE: K2.kt
|
||||
public final fun main(): R|kotlin/Unit| {
|
||||
Q|JavaClass|.R|/JavaClass.baz|(R|/KotlinClass.KotlinClass|<R|ft<kotlin/Int, kotlin/Int?>!|>())
|
||||
Q|JavaClass|.R|/JavaClass.baz|(R|/KotlinClass.KotlinClass|<R|kotlin/Int|>())
|
||||
Q|JavaClass|.<Inapplicable(INAPPLICABLE): [/JavaClass.baz]>#(R|/KotlinClass.KotlinClass|<R|kotlin/String|>())
|
||||
Q|JavaClass|.<Inapplicable(INAPPLICABLE): [/JavaClass.baz]>#(String())
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
// FILE: K1.kt
|
||||
open class KotlinOuter {
|
||||
inner open class KotlinInner {
|
||||
fun foo() {}
|
||||
}
|
||||
|
||||
fun bar() {}
|
||||
}
|
||||
|
||||
// FILE: J1.java
|
||||
public class J1 extends KotlinOuter {
|
||||
public class J2 extends KotlinInner {
|
||||
public void bazbaz() {}
|
||||
}
|
||||
|
||||
public void baz() {}
|
||||
}
|
||||
|
||||
// FILE: K2.kt
|
||||
class K2: J1() {
|
||||
fun main() {
|
||||
bar()
|
||||
baz()
|
||||
}
|
||||
|
||||
inner class K3 : J2() {
|
||||
fun main() {
|
||||
foo()
|
||||
bazbaz()
|
||||
bar()
|
||||
baz()
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,46 @@
|
||||
FILE: K1.kt
|
||||
public open class KotlinOuter : R|kotlin/Any| {
|
||||
public constructor(): R|KotlinOuter| {
|
||||
super<R|kotlin/Any|>()
|
||||
}
|
||||
|
||||
public open inner class KotlinInner : R|kotlin/Any| {
|
||||
public constructor(): R|KotlinOuter.KotlinInner| {
|
||||
super<R|kotlin/Any|>()
|
||||
}
|
||||
|
||||
public final fun foo(): R|kotlin/Unit| {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public final fun bar(): R|kotlin/Unit| {
|
||||
}
|
||||
|
||||
}
|
||||
FILE: K2.kt
|
||||
public final class K2 : R|J1| {
|
||||
public constructor(): R|K2| {
|
||||
super<R|J1|>()
|
||||
}
|
||||
|
||||
public final fun main(): R|kotlin/Unit| {
|
||||
this@R|/KotlinOuter|.R|/KotlinOuter.bar|()
|
||||
this@R|/J1|.R|/J1.baz|()
|
||||
}
|
||||
|
||||
public final inner class K3 : R|J1.J2| {
|
||||
public constructor(): R|K2.K3| {
|
||||
super<R|J1.J2|>()
|
||||
}
|
||||
|
||||
public final fun main(): R|kotlin/Unit| {
|
||||
this@R|/KotlinOuter.KotlinInner|.R|/KotlinOuter.KotlinInner.foo|()
|
||||
this@R|/J1.J2|.R|/J1.J2.bazbaz|()
|
||||
this@R|/KotlinOuter|.R|/KotlinOuter.bar|()
|
||||
this@R|/J1|.R|/J1.baz|()
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user