Analysis API: add test covering get missing when branches

Also fix FIR implementation to generate boolean branches in the same
order as FE1.0.
This commit is contained in:
Tianyu Geng
2021-11-02 17:37:33 -07:00
committed by Ilya Kirillov
parent 8ba2e4d221
commit 2c2851af6e
37 changed files with 455 additions and 17 deletions
@@ -0,0 +1,5 @@
fun test(b: Boolean) {
<caret>when(b) {
else -> {}
}
}
@@ -0,0 +1,2 @@
True - true
False - false
@@ -0,0 +1,4 @@
fun test(b: Boolean) {
<caret>when(b) {
}
}
@@ -0,0 +1,2 @@
True - true
False - false
@@ -0,0 +1,5 @@
fun test(b: Boolean) {
<caret>when(b) {
true -> {}
}
}
@@ -0,0 +1 @@
False - false
@@ -0,0 +1,9 @@
enum class MyEnum {
A, B, C
}
fun test(e: MyEnum) {
<caret>when (e) {
else -> {}
}
}
@@ -0,0 +1,3 @@
EnumCheckIsMissing - MyEnum.A
EnumCheckIsMissing - MyEnum.B
EnumCheckIsMissing - MyEnum.C
@@ -0,0 +1,8 @@
enum class MyEnum {
A, B, C
}
fun test(e: MyEnum) {
<caret>when (e) {
}
}
@@ -0,0 +1,3 @@
EnumCheckIsMissing - MyEnum.A
EnumCheckIsMissing - MyEnum.B
EnumCheckIsMissing - MyEnum.C
@@ -0,0 +1,9 @@
enum class MyEnum {
A, B, C
}
fun test(e: MyEnum) {
<caret>when (e) {
MyEnum.A -> {}
}
}
@@ -0,0 +1,2 @@
EnumCheckIsMissing - MyEnum.B
EnumCheckIsMissing - MyEnum.C
@@ -0,0 +1,4 @@
fun test(n: Nothing) {
<caret>when (n) {
}
}
@@ -0,0 +1 @@
Unknown - else
@@ -0,0 +1,4 @@
fun test(b: Boolean?) {
<caret>when(b) {
}
}
@@ -0,0 +1,3 @@
True - true
False - false
NullIsMissing - null
@@ -0,0 +1,8 @@
enum class MyEnum {
A, B, C
}
fun test(e: MyEnum?) {
<caret>when (e) {
}
}
@@ -0,0 +1,4 @@
EnumCheckIsMissing - MyEnum.A
EnumCheckIsMissing - MyEnum.B
EnumCheckIsMissing - MyEnum.C
NullIsMissing - null
@@ -0,0 +1 @@
unknown - else
@@ -0,0 +1,4 @@
fun test(n: Nothing?) {
<caret>when (n) {
}
}
@@ -0,0 +1 @@
NullIsMissing - null
@@ -0,0 +1,9 @@
sealed class Foo {
object A : Foo()
class B(val i: Int) : Foo()
}
fun test(e: Foo?) {
<caret>when (e) {
}
}
@@ -0,0 +1,3 @@
IsTypeCheckIsMissing - Foo.A
IsTypeCheckIsMissing - is Foo.B
NullIsMissing - null
@@ -0,0 +1,10 @@
sealed class Foo {
object A : Foo()
class B(val i: Int) : Foo()
}
fun test(e: Foo) {
<caret>when (e) {
else -> {}
}
}
@@ -0,0 +1,2 @@
IsTypeCheckIsMissing - Foo.A
IsTypeCheckIsMissing - is Foo.B
@@ -0,0 +1,9 @@
sealed class Foo {
object A : Foo()
class B(val i: Int) : Foo()
}
fun test(e: Foo) {
<caret>when (e) {
}
}
@@ -0,0 +1,2 @@
IsTypeCheckIsMissing - Foo.A
IsTypeCheckIsMissing - is Foo.B
@@ -0,0 +1,10 @@
sealed class Foo {
object A : Foo()
class B(val i: Int) : Foo()
}
fun test(e: Foo) {
<caret>when (e) {
Foo.A -> {}
}
}
@@ -0,0 +1 @@
IsTypeCheckIsMissing - is Foo.B