82255d5ee8
Add tests for fake overrides with focus on java interoperability Co-authored-by: Aleksandra Arsenteva <aleksandra.arsenteva@jetbrains.com>
113 lines
1.8 KiB
Kotlin
Vendored
113 lines
1.8 KiB
Kotlin
Vendored
// FIR_IDENTICAL
|
|
// TARGET_BACKEND: JVM
|
|
|
|
// FILE: Java1.java
|
|
public abstract class Java1 extends A { }
|
|
|
|
// FILE: Java2.java
|
|
public class Java2 extends A {
|
|
@Override
|
|
public short toShort() {
|
|
return 0;
|
|
}
|
|
|
|
@Override
|
|
public long toLong() {
|
|
return 1;
|
|
}
|
|
|
|
@Override
|
|
public int toInt() {
|
|
return 2;
|
|
}
|
|
|
|
@Override
|
|
public float toFloat() {
|
|
return 3;
|
|
}
|
|
|
|
@Override
|
|
public double toDouble() { return 4; }
|
|
|
|
@Override
|
|
public byte toByte() {
|
|
return 5;
|
|
}
|
|
}
|
|
// FILE: Java3.java
|
|
public interface Java3 {
|
|
default double toDouble(){
|
|
return 100;
|
|
};
|
|
}
|
|
|
|
// FILE: 1.kt
|
|
abstract class A : Number()
|
|
|
|
abstract class B : Java1() // Kotlin ← Java ← Kotlin ← Kotlin
|
|
|
|
abstract class C : Java1() {
|
|
override fun toByte(): Byte {
|
|
return 1
|
|
}
|
|
}
|
|
|
|
abstract class D : Java2() // Kotlin ← Java(override) ← Kotlin ← Kotlin
|
|
|
|
class E : Java2() {
|
|
override fun toByte(): Byte {
|
|
return 5
|
|
}
|
|
override fun toShort(): Short {
|
|
return 6
|
|
}
|
|
}
|
|
|
|
abstract class F : A(), Java3 // Kotlin ← Java, Kotlin2 ← Kotlin3
|
|
|
|
abstract class G : A(), Java3 {
|
|
override fun toFloat(): Float {
|
|
return 1.0F
|
|
}
|
|
override fun toInt(): Int {
|
|
return 1
|
|
}
|
|
}
|
|
|
|
abstract class H : Java1(), Java3 //Kotlin ← Java1, Java2 ← Kotlin2
|
|
|
|
abstract class I : Java1(), Java3 {
|
|
override fun toLong(): Long {
|
|
return 1
|
|
}
|
|
override fun toShort(): Short {
|
|
return 1
|
|
}
|
|
}
|
|
|
|
|
|
fun test(a: A, b: B, c: C, d: D, e: E, f: F, g: G, h: H, i: I){
|
|
a.toInt()
|
|
a.toShort()
|
|
|
|
b.toByte()
|
|
b.toLong()
|
|
|
|
c.toByte()
|
|
c.toInt()
|
|
|
|
d.toShort()
|
|
d.toInt()
|
|
|
|
e.toFloat()
|
|
e.toByte()
|
|
|
|
g.toInt()
|
|
g.toByte()
|
|
|
|
h.toDouble()
|
|
h.toByte()
|
|
|
|
i.toByte()
|
|
i.toShort()
|
|
} |