FIR checker: support DUPLICATE_LABEL_IN_WHEN

Changes from FE1.0:
1. As discussed previously, no expression evaluation happens during this
check.
2. FE1.0 doesn't check redundant object comparisons.
This commit is contained in:
Tianyu Geng
2021-06-23 13:31:40 -07:00
committed by Mikhail Glukhikh
parent 7c6326856b
commit 4915d8dda3
12 changed files with 109 additions and 17 deletions
@@ -26,7 +26,7 @@ fun case1() {
val z = JavaEnum.Val_1
val when2 = <!NO_ELSE_IN_WHEN!>when<!> (z) {
JavaEnum.Val_1 -> { }
JavaEnum.Val_1 -> { }
<!DUPLICATE_LABEL_IN_WHEN!>JavaEnum.Val_1<!> -> { }
}
}
@@ -37,7 +37,7 @@ fun case2() {
val b = false
val when2: Any = <!NO_ELSE_IN_WHEN!>when<!> (b) {
false -> { }
false -> { }
<!DUPLICATE_LABEL_IN_WHEN!>false<!> -> { }
}
}
@@ -47,7 +47,7 @@ fun case3() {
val a = false
val when2: Any = <!NO_ELSE_IN_WHEN!>when<!> (a) {
true -> { }
true -> { }
<!DUPLICATE_LABEL_IN_WHEN!>true<!> -> { }
}
}
@@ -58,7 +58,7 @@ fun case4() {
val when2 = <!NO_ELSE_IN_WHEN!>when<!> (x){
is SClass.A ->{ }
is SClass.B ->{ }
is SClass.B ->{ }
is <!DUPLICATE_LABEL_IN_WHEN!>SClass.B<!> ->{ }
}
}
@@ -37,7 +37,7 @@ fun case1() {
val when3 = when (z) {
JavaEnum.Val_1 -> { }
JavaEnum.Val_2 -> { }
JavaEnum.Val_2 -> { }
<!DUPLICATE_LABEL_IN_WHEN!>JavaEnum.Val_2<!> -> { }
}
}
@@ -57,7 +57,7 @@ fun case2() {
}
val when3: Any = <!NO_ELSE_IN_WHEN!>when<!> (b) {
false -> { }
false -> { }
<!DUPLICATE_LABEL_IN_WHEN!>false<!> -> { }
!false -> { }
}
}
@@ -78,7 +78,7 @@ fun case3() {
val when3: Any = when (a) {
true -> { }
false -> { }
false -> { }
<!DUPLICATE_LABEL_IN_WHEN!>false<!> -> { }
}
}
@@ -102,7 +102,7 @@ fun case4() {
val when3 = when (x){
is SClass.A ->{ }
is SClass.B ->{ }
is SClass.B ->{ }
is <!DUPLICATE_LABEL_IN_WHEN!>SClass.B<!> ->{ }
is SClass.C ->{ }
}
}