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,15 @@
enum class Direction {
NORTH, SOUTH, WEST, EAST
}
fun foo(dir: Direction): Int {
val res: Int
// See KT-6046: res is always initialized
when (dir) {
Direction.NORTH -> res = 1
Direction.SOUTH -> res = 2
Direction.WEST -> res = 3
Direction.EAST -> res = 4
}
return res
}