34e6649d31
Before this commit, nullable argument could match not null parameter. Now we require also correct nullability that breaks some cases
31 lines
720 B
Kotlin
Vendored
31 lines
720 B
Kotlin
Vendored
// !DIAGNOSTICS: -DEBUG_INFO_SMARTCAST
|
|
class Foo {
|
|
fun foo(a: Foo): Foo = a
|
|
}
|
|
|
|
fun main() {
|
|
val x: Foo? = null
|
|
val y: Foo? = null
|
|
|
|
x.<!INAPPLICABLE_CANDIDATE!>foo<!>(y)
|
|
x!!.<!INAPPLICABLE_CANDIDATE!>foo<!>(y)
|
|
x.foo(y!!)
|
|
x!!.foo(y!!)
|
|
|
|
val a: Foo? = null
|
|
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.foo(b!!.<!INAPPLICABLE_CANDIDATE!>foo<!>(c))
|
|
a!!.foo(b!!.<!INAPPLICABLE_CANDIDATE!>foo<!>(c))
|
|
a.foo(b.foo(c!!))
|
|
a!!.foo(b.foo(c!!))
|
|
a.foo(b!!.foo(c!!))
|
|
a!!.foo(b!!.foo(c!!))
|
|
|
|
val z: Foo? = null
|
|
z!!.foo(z!!)
|
|
}
|