FIR: support CONDITION_TYPE_MISMATCH diagnostic

We report CONDITION_TYPE_MISMATCH on
- loop conditions
- when branch conditions
- binary logic arguments
This commit is contained in:
Mikhail Glukhikh
2021-05-18 13:26:27 +03:00
parent e85d97b894
commit 3663884db2
27 changed files with 165 additions and 50 deletions
@@ -3,12 +3,12 @@
// TESTCASE NUMBER: 1
fun case_1(value_1: Int, value_2: String, value_3: TypesProvider): String {
when {
.012f / value_1 -> return ""
"$value_2..." -> return ""
'-' -> return ""
{} -> return ""
value_3.getAny() -> return ""
-10..-1 -> return ""
<!CONDITION_TYPE_MISMATCH!>.012f / value_1<!> -> return ""
<!CONDITION_TYPE_MISMATCH!>"$value_2..."<!> -> return ""
<!CONDITION_TYPE_MISMATCH!>'-'<!> -> return ""
<!CONDITION_TYPE_MISMATCH!>{}<!> -> return ""
<!CONDITION_TYPE_MISMATCH!>value_3.getAny()<!> -> return ""
<!CONDITION_TYPE_MISMATCH!>-10..-1<!> -> return ""
}
return ""
@@ -5,7 +5,7 @@ fun case_1(value_1: TypesProvider) {
when {
getBoolean(), value_1.getBoolean() -> return
value_1.getBoolean() && getBoolean(), getLong() == 1000L -> return
Out<Int>(), getLong(), {}, Any(), throw Exception() -> return
<!CONDITION_TYPE_MISMATCH!>Out<Int>()<!>, getLong(), {}, Any(), throw Exception() -> return
}
return