KT-9883 prohibit using spread operator for nullable value
#KT-9883 Fixed
This commit is contained in:
@@ -0,0 +1,44 @@
|
||||
// !DIAGNOSTICS:-UNUSED_PARAMETER
|
||||
|
||||
// KT-9883 prohibit using spread operator for nullable value
|
||||
|
||||
// FILE: A.java
|
||||
|
||||
public class A {
|
||||
public void foo(int x, String ... args) {}
|
||||
public static String[] ar;
|
||||
}
|
||||
|
||||
|
||||
// FILE: 1.kt
|
||||
val args: Array<String>? = null
|
||||
|
||||
fun bar(x: Int, vararg s: String) {}
|
||||
|
||||
fun baz(s: String) {}
|
||||
|
||||
fun f() {
|
||||
A().foo(1, <!SPREAD_OF_NULLABLE!>*<!>args)
|
||||
bar(2, <!SPREAD_OF_NULLABLE!>*<!><!TYPE_MISMATCH!>args<!>)
|
||||
baz(<!NON_VARARG_SPREAD, SPREAD_OF_NULLABLE!>*<!>args)
|
||||
}
|
||||
|
||||
fun g(args: Array<String>?) {
|
||||
|
||||
if (args != null) {
|
||||
A().foo(1, *<!DEBUG_INFO_SMARTCAST!>args<!>)
|
||||
}
|
||||
A().foo(1, *A.ar)
|
||||
}
|
||||
|
||||
class B {
|
||||
var args: Array<String>? = null
|
||||
}
|
||||
|
||||
fun h(b: B) {
|
||||
if (b.args != null) {
|
||||
A().foo(1, <!SPREAD_OF_NULLABLE!>*<!><!SMARTCAST_IMPOSSIBLE!>b.args<!>)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+27
@@ -0,0 +1,27 @@
|
||||
package
|
||||
|
||||
public val args: kotlin.Array<kotlin.String>? = null
|
||||
public fun bar(/*0*/ x: kotlin.Int, /*1*/ vararg s: kotlin.String /*kotlin.Array<out kotlin.String>*/): kotlin.Unit
|
||||
public fun baz(/*0*/ s: kotlin.String): kotlin.Unit
|
||||
public fun f(): kotlin.Unit
|
||||
public fun g(/*0*/ args: kotlin.Array<kotlin.String>?): kotlin.Unit
|
||||
public fun h(/*0*/ b: B): kotlin.Unit
|
||||
|
||||
public open class A {
|
||||
public constructor A()
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open fun foo(/*0*/ x: kotlin.Int, /*1*/ vararg args: kotlin.String! /*kotlin.Array<(out) kotlin.String!>!*/): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
|
||||
// Static members
|
||||
public final var ar: kotlin.Array<(out) kotlin.String!>!
|
||||
}
|
||||
|
||||
public final class B {
|
||||
public constructor B()
|
||||
public final var args: kotlin.Array<kotlin.String>?
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
Reference in New Issue
Block a user