Files
kotlin/compiler/testData/codegen/box/when/enumOptimization/manyWhensWithinClass.kt
2016-11-16 19:50:10 +03:00

53 lines
1.2 KiB
Kotlin
Vendored

// WITH_RUNTIME
import kotlin.test.assertEquals
enum class Season {
WINTER,
SPRING,
SUMMER,
AUTUMN
}
class A {
public fun bar1(x : Season) : String {
when (x) {
Season.WINTER, Season.SPRING -> return "winter_spring"
Season.SPRING -> return "spring"
Season.SUMMER -> return "summer"
}
return "autumn";
}
public fun bar2(y : Season) : String {
return bar3(y) { x ->
when (x) {
Season.WINTER, Season.SPRING -> "winter_spring"
Season.SPRING -> "spring"
Season.SUMMER -> "summer"
else -> "autumn"
}
}
}
private fun bar3(x : Season, block : (Season) -> String) = block(x)
}
fun box() : String {
val a = A()
assertEquals("winter_spring", a.bar1(Season.WINTER))
assertEquals("winter_spring", a.bar1(Season.SPRING))
assertEquals("summer", a.bar1(Season.SUMMER))
assertEquals("autumn", a.bar1(Season.AUTUMN))
assertEquals("winter_spring", a.bar2(Season.WINTER))
assertEquals("winter_spring", a.bar2(Season.SPRING))
assertEquals("summer", a.bar2(Season.SUMMER))
assertEquals("autumn", a.bar2(Season.AUTUMN))
return "OK"
}