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
Vendored
+3
-3
@@ -7,7 +7,7 @@ fun main() {
|
||||
val x: Foo? = null
|
||||
val y: Foo? = null
|
||||
|
||||
x.<!INAPPLICABLE_CANDIDATE!>foo<!>(y)
|
||||
x.<!UNSAFE_CALL!>foo<!>(y)
|
||||
x!!.<!INAPPLICABLE_CANDIDATE!>foo<!>(y)
|
||||
x.foo(y!!)
|
||||
x!!.foo(y!!)
|
||||
@@ -16,8 +16,8 @@ fun main() {
|
||||
val b: Foo? = null
|
||||
val c: Foo? = null
|
||||
|
||||
a.<!INAPPLICABLE_CANDIDATE!>foo<!>(b.<!INAPPLICABLE_CANDIDATE!>foo<!>(c))
|
||||
a!!.foo(b.<!INAPPLICABLE_CANDIDATE!>foo<!>(c))
|
||||
a.<!UNSAFE_CALL!>foo<!>(b.<!UNSAFE_CALL!>foo<!>(c))
|
||||
a!!.foo(b.<!UNSAFE_CALL!>foo<!>(c))
|
||||
a.foo(b!!.<!INAPPLICABLE_CANDIDATE!>foo<!>(c))
|
||||
a!!.foo(b!!.<!INAPPLICABLE_CANDIDATE!>foo<!>(c))
|
||||
a.foo(b.foo(c!!))
|
||||
|
||||
Reference in New Issue
Block a user