[FE] Make whens on expect sealed classes and enums not exhaustive

This commit is contained in:
Dmitriy Novozhilov
2021-02-24 16:44:48 +03:00
parent 1cf73203c7
commit 4222bb9af2
29 changed files with 768 additions and 11 deletions
@@ -0,0 +1,29 @@
// IGNORE_BACKEND_FIR: JVM_IR
// TARGET_BACKEND: JVM
// !LANGUAGE: +MultiPlatformProjects
// ISSUE: KT-20306
// MODULE: m1-common
// FILE: common.kt
enum class Base {
A, B
}
fun testCommon(base: Base) {
val x = when (base) { // must be Ok
Base.A -> 1
Base.B -> 2
}
}
// MODULE: m1-jvm(m1-common)
// FILE: main.kt
fun testPlatform(base: Base) {
val x = when (base) { // must be OK
Base.A -> 1
Base.B -> 2
}
}
fun box() = "OK"
@@ -0,0 +1,30 @@
// IGNORE_BACKEND_FIR: JVM_IR
// TARGET_BACKEND: JVM
// !LANGUAGE: +MultiPlatformProjects
// ISSUE: KT-44474
// MODULE: m1-common
// FILE: common.kt
sealed class Base()
class A : Base()
object B : Base()
fun testCommon(base: Base) {
val x = when (base) { // must be Ok
is A -> 1
B -> 2
}
}
// MODULE: m1-jvm(m1-common)
// FILE: main.kt
fun testPlatform(base: Base) {
val x = when (base) { // must be OK
is A -> 1
B -> 2
}
}
fun box() = "OK"
@@ -0,0 +1,30 @@
// IGNORE_BACKEND_FIR: JVM_IR
// TARGET_BACKEND: JVM
// !LANGUAGE: +MultiPlatformProjects
// ISSUE: KT-44474
// MODULE: m1-common
// FILE: common.kt
sealed interface Base
interface A : Base
object B : Base
fun testCommon(base: Base) {
val x = when (base) { // must be Ok
is A -> 1
B -> 2
}
}
// MODULE: m1-jvm(m1-common)
// FILE: main.kt
fun testPlatform(base: Base) {
val x = when (base) { // must be OK
is A -> 1
B -> 2
}
}
fun box() = "OK"