[FIR] Assume SafeCallsAreAlwaysNullable is always on

This commit is contained in:
Nikolay Lunyak
2023-02-24 16:02:35 +02:00
committed by Space Team
parent be5850112a
commit 72823657c9
9 changed files with 48 additions and 17 deletions
@@ -0,0 +1,7 @@
// !LANGUAGE: -SafeCallsAreAlwaysNullable
// http://youtrack.jetbrains.net/issue/KT-418
fun ff() {
val i: Int = 1
val a: Int = <!INITIALIZER_TYPE_MISMATCH!>i<!SAFE_CALL_WILL_CHANGE_NULLABILITY!><!UNNECESSARY_SAFE_CALL!>?.<!>plus(2)<!><!>
}
@@ -1,4 +1,3 @@
// FIR_IDENTICAL
// !LANGUAGE: -SafeCallsAreAlwaysNullable
// http://youtrack.jetbrains.net/issue/KT-418
@@ -8,6 +8,6 @@ fun foo(): String {
}
fun bar(): String {
val x = fn() ?: return ""
val y = x<!SAFE_CALL_WILL_CHANGE_NULLABILITY!><!UNNECESSARY_SAFE_CALL!>?.<!>let { throw Exception() }<!> <!USELESS_ELVIS!>?: "unreachable"<!>
val y = x<!SAFE_CALL_WILL_CHANGE_NULLABILITY!><!UNNECESSARY_SAFE_CALL!>?.<!>let { throw Exception() }<!> ?: "unreachable"
return y
}
@@ -0,0 +1,34 @@
// LANGUAGE: -SafeCallsAreAlwaysNullable
// DIAGNOSTICS: -UNNECESSARY_SAFE_CALL
// ISSUE: KT-46860
interface A {
fun id(): A
fun foo(): String
}
fun test_1(a: A) {
val s = a.id().id().id().id().id().id().id().id()<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>?.foo()<!><!UNSAFE_CALL!>.<!>length
}
fun test_2(a: A) {
val s = a.id()
.id()
.id()
.id()
<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>?.id()<!>
<!UNSAFE_CALL!>.<!>id()
.id()
.id()
<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>?.foo()<!>
?.length
}
fun test_3(a: A) {
val s = a.id()<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>?.
id()<!><!UNSAFE_CALL!>.<!>
id()<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>?.
foo()<!><!UNSAFE_CALL!>.<!>
length
}
@@ -1,4 +1,3 @@
// FIR_IDENTICAL
// LANGUAGE: -SafeCallsAreAlwaysNullable
// DIAGNOSTICS: -UNNECESSARY_SAFE_CALL
// ISSUE: KT-46860