FIR: report UNSAFE_CALL on dot when possible

This commit is contained in:
Mikhail Glukhikh
2021-01-29 10:25:59 +03:00
parent 0ee4f1f393
commit 7d4eaefd36
249 changed files with 1208 additions and 1649 deletions
@@ -14,7 +14,7 @@ fun nullWhenNull(x: Int?): Int? {
fun testNullWhenNull(x: Int?) {
if (nullWhenNull(x) == null) {
x.<!UNSAFE_CALL!>dec<!>()
x<!UNSAFE_CALL!>.<!>dec()
}
else {
x.dec()
@@ -24,10 +24,10 @@ fun testNullWhenNull(x: Int?) {
x.dec()
}
else {
x.<!UNSAFE_CALL!>dec<!>()
x<!UNSAFE_CALL!>.<!>dec()
}
x.<!UNSAFE_CALL!>dec<!>()
x<!UNSAFE_CALL!>.<!>dec()
}
// NB. it is the same function as `nullWhenNull`, but annotations specifies other facet of the function behaviour
@@ -43,15 +43,15 @@ fun testNotNullWhenNotNull (x: Int?) {
x == null
}
else {
x.<!UNSAFE_CALL!>dec<!>()
x<!UNSAFE_CALL!>.<!>dec()
}
if (notNullWhenNotNull(x) != null) {
x.<!UNSAFE_CALL!>dec<!>()
x<!UNSAFE_CALL!>.<!>dec()
}
else {
x == null
}
x.<!UNSAFE_CALL!>dec<!>()
x<!UNSAFE_CALL!>.<!>dec()
}
@@ -20,28 +20,28 @@ fun myEqualsNotNull(x: Int?): Boolean {
}
fun testBasicEquals(x: Int?) {
x.<!UNSAFE_CALL!>inc<!>()
x<!UNSAFE_CALL!>.<!>inc()
if (myEqualsNull(x)) {
x.<!UNSAFE_CALL!>inc<!>()
x<!UNSAFE_CALL!>.<!>inc()
}
else {
x.inc()
}
x.<!UNSAFE_CALL!>inc<!>()
x<!UNSAFE_CALL!>.<!>inc()
}
fun testBasicNotEquals(x: Int?) {
x.<!UNSAFE_CALL!>inc<!>()
x<!UNSAFE_CALL!>.<!>inc()
if (myEqualsNotNull(x)) {
x.inc()
}
else {
x.<!UNSAFE_CALL!>inc<!>()
x<!UNSAFE_CALL!>.<!>inc()
}
x.<!UNSAFE_CALL!>inc<!>()
x<!UNSAFE_CALL!>.<!>inc()
}
@@ -14,7 +14,7 @@ fun Any?.isNull(): Boolean {
fun smartcastOnReceiver(x: Int?) {
if (x.isNull()) {
x.<!UNSAFE_CALL!>inc<!>()
x<!UNSAFE_CALL!>.<!>inc()
}
else {
x.dec()
@@ -26,10 +26,10 @@ class UnstableReceiver {
fun smartcastOnUnstableReceiver() {
if (x.isNull()) {
x.<!UNSAFE_CALL!>inc<!>()
x<!UNSAFE_CALL!>.<!>inc()
}
else {
x.<!UNSAFE_CALL!>dec<!>()
x<!UNSAFE_CALL!>.<!>dec()
}
}
}
@@ -6,6 +6,6 @@ import kotlin.contracts.*
fun f3(value: String?) {
if (!value.isNullOrEmpty() is Boolean) {
value.<!UNSAFE_CALL!>length<!>
value<!UNSAFE_CALL!>.<!>length
}
}