FIR checker: differentiate UNSAFE_CALL from INAPPLICABLE_CANDIDATE

To do so, inside the root cause of inapplicable candidate errors,
we will record expected/actual type of receiver, if any.
That will help identifying inapplicable calls on nullable receiver.
This commit is contained in:
Jinseong Jeon
2021-01-26 16:03:27 -08:00
committed by Mikhail Glukhikh
parent 4b823eca21
commit e72ddbcbfe
275 changed files with 1426 additions and 1388 deletions
@@ -8,7 +8,7 @@
*/
fun case1() {
val x : Case1? = Case1()
x.<!INAPPLICABLE_CANDIDATE!>x<!> = "0"
x.x = "0"
x?.x = "0"
<!VARIABLE_EXPECTED!>x::x<!> = TODO()
}
@@ -24,7 +24,7 @@ class Case1{
*/
fun case2() {
val x : Case2? = Case2(null)
x.<!INAPPLICABLE_CANDIDATE!>x<!> = "0"
x.x = "0"
x?.x = "0"
<!VARIABLE_EXPECTED!>x::x<!> = TODO()
}
@@ -37,7 +37,7 @@ class Case2(val x: Any?) {}
*/
fun case3() {
val x : Case3? = Case3()
x.<!INAPPLICABLE_CANDIDATE!>x<!> = "0"
x.x = "0"
x?.x = "0"
<!VARIABLE_EXPECTED!>x::x<!> = TODO()
}