FIR2IR: Unwrap intersection overrides for intersection types

This commit is contained in:
Denis.Zharkov
2021-01-22 19:34:07 +03:00
parent 3a3d2ee3e9
commit 8c30adc301
7 changed files with 78 additions and 1 deletions
@@ -0,0 +1,40 @@
// TARGET_BACKEND: JVM
// FILE: A.kt
package a
interface T {
var x: String
}
interface A : T {
override var x: String
}
interface B : T {
override var x: String
}
class C : A, B {
override var x: String = ""
}
class D : A, B {
override var x: String = ""
}
// FILE: B.kt
import a.*
fun foo(condition: Boolean): String {
val aAndB = if (condition) C() else D()
aAndB.x = "OK"
return aAndB.x
}
fun box(): String {
if (foo(true) != "OK") return "fail 1"
if (foo(false) != "OK") return "fail 2"
return "OK"
}