Implementation of exhaustive whens in control flow analysis.

Now control flow analyzer knows when is exhaustive.
If despite of this all conditions are accidentally false, jump to error is generated.
A set of tests (diagnostic, control flow). #KT-5113 Fixed. #KT-6046 Fixed. #KT-1882 Fixed.
This commit is contained in:
Mikhail Glukhikh
2015-05-12 19:20:31 +03:00
parent c4aa6d01a9
commit 0d7f649cc2
16 changed files with 367 additions and 1 deletions
@@ -0,0 +1,14 @@
enum class MyEnum {
A, B
}
fun foo(x: MyEnum?): Int {
val y: Int
// See KT-6046: y is always initialized
when (x) {
MyEnum.A -> y = 1
MyEnum.B -> y = 2
null -> y = 0
}
return y
}