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
@@ -19,13 +19,13 @@ import checkType
import check
// TESTCASE NUMBER: 0
fun foo() = run { false && JavaClass.VALUE && throw Exception() }
fun foo() = run { false && <!CONDITION_TYPE_MISMATCH!>JavaClass.VALUE<!> && throw Exception() }
// TESTCASE NUMBER: 1
fun case1() {
val a: Boolean? = false
checkSubtype<Boolean?>(a)
val x4 = a && true
val x4 = <!CONDITION_TYPE_MISMATCH!>a<!> && true
x4 <!OVERLOAD_RESOLUTION_AMBIGUITY!>checkType<!> { <!NONE_APPLICABLE!>check<!><Boolean>() }
}
@@ -33,7 +33,7 @@ fun case1() {
fun case2() {
val a: Any = false
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Any")!>a<!>
val x4 = a && true
val x4 = <!CONDITION_TYPE_MISMATCH!>a<!> && true
x4 <!OVERLOAD_RESOLUTION_AMBIGUITY!>checkType<!> { <!NONE_APPLICABLE!>check<!><Boolean>() }
}
@@ -43,7 +43,7 @@ fun case3() {
val a2 = JavaClass.VALUE
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Any..kotlin.Any?!")!>a2<!>
val x3 = a1 && a2
val x3 = a1 && <!CONDITION_TYPE_MISMATCH!>a2<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Boolean")!>x3<!>
x3 <!OVERLOAD_RESOLUTION_AMBIGUITY!>checkType<!> { <!NONE_APPLICABLE!>check<!><Boolean>() }