Fix subject variable handling in specialized enum codegen
#KT-27161
This commit is contained in:
@@ -0,0 +1,13 @@
|
||||
enum class Test {
|
||||
A, B, OTHER
|
||||
}
|
||||
|
||||
fun peek() = Test.A
|
||||
|
||||
fun box(): String {
|
||||
val x = when (val type = peek()) {
|
||||
Test.A -> "OK"
|
||||
else -> "other"
|
||||
}
|
||||
return x
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
fun peek() = 1
|
||||
|
||||
fun box(): String {
|
||||
val x = when (val x = peek()) {
|
||||
1 -> "OK"
|
||||
2 -> "2"
|
||||
else -> "other $x"
|
||||
}
|
||||
return x
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
enum class Test {
|
||||
A, B, OTHER
|
||||
}
|
||||
|
||||
fun peek() = Test.A
|
||||
|
||||
fun box(): String {
|
||||
val x = when (val t1 = peek()) {
|
||||
Test.A -> {
|
||||
val y = peek()
|
||||
when (val t2 = y) {
|
||||
Test.A ->
|
||||
when (val t3 = peek()) {
|
||||
Test.A -> "OK"
|
||||
else -> "other 3"
|
||||
}
|
||||
|
||||
else -> "other 2"
|
||||
}
|
||||
}
|
||||
|
||||
else -> "other 1"
|
||||
}
|
||||
return x
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
enum class Test {
|
||||
A, B, OTHER
|
||||
}
|
||||
|
||||
fun peek() = Test.A
|
||||
|
||||
fun box(): String {
|
||||
val x = when (val t1 = peek()) {
|
||||
Test.A -> {
|
||||
when (
|
||||
val t2 = when(val y = peek()) {
|
||||
Test.A -> Test.A
|
||||
Test.B -> Test.B
|
||||
else -> Test.OTHER
|
||||
}
|
||||
) {
|
||||
Test.A ->
|
||||
when (val t3 = peek()) {
|
||||
Test.A -> "OK"
|
||||
else -> "other 3"
|
||||
}
|
||||
|
||||
else -> "other 2"
|
||||
}
|
||||
}
|
||||
|
||||
else -> "other 1"
|
||||
}
|
||||
return x
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
fun peek() = "A"
|
||||
|
||||
fun box(): String {
|
||||
val x = when (val s = peek()) {
|
||||
"A" -> "OK"
|
||||
"B" -> "B"
|
||||
else -> "other $s"
|
||||
}
|
||||
return x
|
||||
}
|
||||
Reference in New Issue
Block a user