d2b8204fdc
(e.g., `nullable.a = b`), and use positioning strategies to locate the dot in the LHS expression. Without it, only the callee reference is reported on, which makes the highlighting of the error and application of quickfixes incorrect in the IDE. Also fixed issue with annotated and/or labeled expressions on LHS of assignment (e.g., `(@Ann label@ i) = 34`).
42 lines
1.4 KiB
Kotlin
Vendored
42 lines
1.4 KiB
Kotlin
Vendored
// !DIAGNOSTICS: -DEBUG_INFO_SMARTCAST
|
|
class Foo {
|
|
fun foo(a: Foo): Foo = a
|
|
var f: Foo? = null
|
|
}
|
|
|
|
fun main() {
|
|
val x: Foo? = null
|
|
val y: Foo? = null
|
|
|
|
x<!UNSAFE_CALL!>.<!>foo(<!TYPE_MISMATCH!>y<!>)
|
|
x!!.foo(<!TYPE_MISMATCH!>y<!>)
|
|
x.foo(y!!)
|
|
x<!UNNECESSARY_NOT_NULL_ASSERTION!>!!<!>.foo(y<!UNNECESSARY_NOT_NULL_ASSERTION!>!!<!>)
|
|
|
|
val a: Foo? = null
|
|
val b: Foo? = null
|
|
val c: Foo? = null
|
|
|
|
a<!UNSAFE_CALL!>.<!>foo(b<!UNSAFE_CALL!>.<!>foo(<!TYPE_MISMATCH!>c<!>))
|
|
a!!.foo(b<!UNSAFE_CALL!>.<!>foo(<!TYPE_MISMATCH!>c<!>))
|
|
a.foo(b!!.foo(<!TYPE_MISMATCH!>c<!>))
|
|
a<!UNNECESSARY_NOT_NULL_ASSERTION!>!!<!>.foo(b<!UNNECESSARY_NOT_NULL_ASSERTION!>!!<!>.foo(<!TYPE_MISMATCH!>c<!>))
|
|
a.foo(b.foo(c!!))
|
|
a<!UNNECESSARY_NOT_NULL_ASSERTION!>!!<!>.foo(b.foo(c<!UNNECESSARY_NOT_NULL_ASSERTION!>!!<!>))
|
|
a.foo(b<!UNNECESSARY_NOT_NULL_ASSERTION!>!!<!>.foo(c<!UNNECESSARY_NOT_NULL_ASSERTION!>!!<!>))
|
|
a<!UNNECESSARY_NOT_NULL_ASSERTION!>!!<!>.foo(b<!UNNECESSARY_NOT_NULL_ASSERTION!>!!<!>.foo(c<!UNNECESSARY_NOT_NULL_ASSERTION!>!!<!>))
|
|
|
|
val z: Foo? = null
|
|
z!!.foo(z<!UNNECESSARY_NOT_NULL_ASSERTION!>!!<!>)
|
|
|
|
val w: Foo? = null
|
|
w<!UNSAFE_CALL!>.<!>f = z
|
|
(w<!UNSAFE_CALL!>.<!>f) = z
|
|
(label@ w<!UNSAFE_CALL!>.<!>f) = z
|
|
w!!.f = z
|
|
w.f = z
|
|
w<!UNNECESSARY_NOT_NULL_ASSERTION!>!!<!>.f = z
|
|
<!SMARTCAST_IMPOSSIBLE!>w.f<!>.f = z
|
|
w.f!!.f = z
|
|
}
|