Separate UNSAFE_IMPLICIT_INVOKE_CALL diagnostics introduced (see KT-8252)

This commit is contained in:
Mikhail Glukhikh
2016-01-15 10:39:12 +03:00
parent fe11b5a473
commit 6157ebe3b8
11 changed files with 33 additions and 14 deletions
+1 -1
View File
@@ -13,7 +13,7 @@ fun foo() {
rule?.apply?.invoke()
// this should be an error
rule?.<!UNSAFE_CALL!>apply<!>()
rule?.<!UNSAFE_IMPLICIT_INVOKE_CALL!>apply<!>()
// these both also ok (with smart cast / unnecessary safe call)
if (rule != null) {
+2 -2
View File
@@ -9,13 +9,13 @@ interface T {
}
fun test(t: T) {
t.<!UNSAFE_CALL!>f<!>(1) //unsafe call error
t.<!UNSAFE_IMPLICIT_INVOKE_CALL!>f<!>(1) //unsafe call error
t.f?.invoke(1)
}
fun test1(t: T?) {
t<!UNSAFE_CALL!>.<!><!FUNCTION_EXPECTED!>f<!>(1) // todo resolve f as value and report UNSAFE_CALL
t?.<!UNSAFE_CALL!>f<!>(1)
t?.<!UNSAFE_IMPLICIT_INVOKE_CALL!>f<!>(1)
t<!UNSAFE_CALL!>.<!>f?.invoke(1)
t?.f?.invoke(1)
}
@@ -1,6 +1,6 @@
fun <E : String?, T : ((CharSequence) -> Unit)?> foo(x: E, y: T) {
if (x != null) {
<!UNSAFE_CALL!>y<!>(<!DEBUG_INFO_SMARTCAST!>x<!>)
<!UNSAFE_IMPLICIT_INVOKE_CALL!>y<!>(<!DEBUG_INFO_SMARTCAST!>x<!>)
}
if (y != null) {
@@ -18,6 +18,6 @@ public class J {
fun test() {
J.staticNN()
J.<!UNSAFE_CALL!>staticN<!>()
J.<!UNSAFE_IMPLICIT_INVOKE_CALL!>staticN<!>()
J.staticJ()
}
@@ -3,18 +3,18 @@ class A(val x: (String.() -> Unit)?)
fun test(a: A) {
if (a.x != null) {
"".<!DEBUG_INFO_SMARTCAST!>(a.x)<!>()
a.<!UNSAFE_CALL!>x<!>("") // todo
a.<!UNSAFE_IMPLICIT_INVOKE_CALL!>x<!>("") // todo
<!DEBUG_INFO_SMARTCAST!>(a.x)<!>("")
}
"".<!UNSAFE_CALL!>(a.x)<!>()
a.<!UNSAFE_CALL!>x<!>("")
<!UNSAFE_CALL!>(a.x)<!>("")
"".<!UNSAFE_IMPLICIT_INVOKE_CALL!>(a.x)<!>()
a.<!UNSAFE_IMPLICIT_INVOKE_CALL!>x<!>("")
<!UNSAFE_IMPLICIT_INVOKE_CALL!>(a.x)<!>("")
with("") {
a.<!UNSAFE_CALL!>x<!>(<!NO_VALUE_FOR_PARAMETER!>)<!>
<!UNSAFE_CALL!>(a.x)<!>()
a.<!UNSAFE_IMPLICIT_INVOKE_CALL!>x<!>(<!NO_VALUE_FOR_PARAMETER!>)<!>
<!UNSAFE_IMPLICIT_INVOKE_CALL!>(a.x)<!>()
if (a.x != null) {
a.<!UNSAFE_CALL!>x<!>(<!NO_VALUE_FOR_PARAMETER!>)<!> // todo
a.<!UNSAFE_IMPLICIT_INVOKE_CALL!>x<!>(<!NO_VALUE_FOR_PARAMETER!>)<!> // todo
<!DEBUG_INFO_SMARTCAST!>(a.x)<!>()
}
}