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:
committed by
Mikhail Glukhikh
parent
4b823eca21
commit
e72ddbcbfe
+1
-1
@@ -3,5 +3,5 @@
|
||||
fun foo(y: String?) {
|
||||
var x: String? = null
|
||||
y?.let { x = it }
|
||||
x.<!INAPPLICABLE_CANDIDATE!>length<!> // Smart cast is not possible
|
||||
x.<!UNSAFE_CALL!>length<!> // Smart cast is not possible
|
||||
}
|
||||
|
||||
+1
-1
@@ -5,7 +5,7 @@ fun bar(z: String?) = z
|
||||
fun foo(y: String?) {
|
||||
var x: String? = ""
|
||||
if (x != null) {
|
||||
bar(y?.let { x = null; it }).<!INAPPLICABLE_CANDIDATE!>length<!>
|
||||
bar(y?.let { x = null; it }).<!UNSAFE_CALL!>length<!>
|
||||
x.length // Smart cast is not possible
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -2,7 +2,7 @@ fun foo(y: String?) {
|
||||
var x: String? = ""
|
||||
if (x != null) {
|
||||
with(y?.let { x = null; it }) {
|
||||
this.<!INAPPLICABLE_CANDIDATE!>length<!>
|
||||
this.<!UNSAFE_CALL!>length<!>
|
||||
x.length
|
||||
}
|
||||
x.length
|
||||
|
||||
Reference in New Issue
Block a user