[FIR-TEST] Add new testdata generated after changes in previous commit
This commit is contained in:
@@ -0,0 +1,6 @@
|
||||
fun foo(vararg t : String) = ""
|
||||
fun foo(vararg t : Int) = ""
|
||||
|
||||
fun test() {
|
||||
foo()
|
||||
}
|
||||
+9
@@ -0,0 +1,9 @@
|
||||
fun main(d : D) {
|
||||
d.from("")
|
||||
d.from(1)
|
||||
}
|
||||
|
||||
class D {
|
||||
fun from(vararg a : Any){}
|
||||
fun from(vararg a : String){}
|
||||
}
|
||||
+19
@@ -0,0 +1,19 @@
|
||||
// FILE: kotlin.kt
|
||||
fun main(j : C, s : Array<String?>) {
|
||||
j.from()
|
||||
j.from("")
|
||||
j.from("", "")
|
||||
j.<!AMBIGUITY!>from<!>("", "", "")
|
||||
|
||||
j.<!AMBIGUITY!>from<!>("", *s) // This should not be an ambiguity, see KT-1842
|
||||
j.from(*s)
|
||||
}
|
||||
|
||||
// FILE: C.java
|
||||
public class C {
|
||||
void from() {}
|
||||
void from(String s) {}
|
||||
void from(String s, String s1) {}
|
||||
void from(String... s) {}
|
||||
void from(String s1, String... s) {}
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
fun foo0() : String = "noarg"
|
||||
|
||||
fun foo0(vararg t : Int) : String = "vararg"
|
||||
|
||||
fun test0() {
|
||||
foo0()
|
||||
foo0(1)
|
||||
val a = IntArray(0)
|
||||
foo0(*a)
|
||||
}
|
||||
+66
@@ -0,0 +1,66 @@
|
||||
// !WITH_NEW_INFERENCE
|
||||
// !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: J.java
|
||||
|
||||
public class J {
|
||||
public interface Invoke {
|
||||
void invoke(String ...args);
|
||||
}
|
||||
|
||||
public static Invoke staticFun;
|
||||
}
|
||||
|
||||
// FILE: 1.kt
|
||||
val args: Array<String>? = null
|
||||
|
||||
fun bar(x: Int, vararg s: String) {}
|
||||
|
||||
fun baz(s: String) {}
|
||||
|
||||
fun getArr(): Array<String>? = null
|
||||
|
||||
fun f() {
|
||||
A().foo(1, *args)
|
||||
bar(2, *args)
|
||||
<!INAPPLICABLE_CANDIDATE!>baz<!>(*args)
|
||||
}
|
||||
|
||||
fun g(args: Array<String>?) {
|
||||
|
||||
if (args != null) {
|
||||
A().foo(1, *args)
|
||||
}
|
||||
A().foo(1, *A.ar)
|
||||
}
|
||||
|
||||
class B {
|
||||
var args: Array<String>? = null
|
||||
}
|
||||
|
||||
fun h(b: B) {
|
||||
if (b.args != null) {
|
||||
A().foo(1, *b.args)
|
||||
}
|
||||
}
|
||||
|
||||
fun k() {
|
||||
A().foo(1, *getArr())
|
||||
bar(2, *getArr())
|
||||
<!INAPPLICABLE_CANDIDATE!>baz<!>(*getArr())
|
||||
}
|
||||
|
||||
fun invokeTest(goodArgs: Array<String>) {
|
||||
J.staticFun(*goodArgs)
|
||||
J.staticFun(*args)
|
||||
J.staticFun(*args ?: null)
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
fun foo1(a : Int) : String = "noarg"
|
||||
|
||||
fun foo1(a : Int, vararg t : Int) : String = "vararg"
|
||||
|
||||
fun test1() {
|
||||
foo1(1)
|
||||
val a = IntArray(0)
|
||||
foo1(1, *a)
|
||||
}
|
||||
+26
@@ -0,0 +1,26 @@
|
||||
// !LANGUAGE: -ProhibitNonConstValuesAsVarargsInAnnotations, -ProhibitAssigningSingleElementsToVarargsInNamedForm
|
||||
|
||||
val nonConstArray = longArrayOf(0)
|
||||
fun nonConstFun(): LongArray = TODO()
|
||||
|
||||
fun nonConstLong(): Long = TODO()
|
||||
|
||||
annotation class Anno(vararg val value: Long)
|
||||
|
||||
@Anno(value = nonConstArray)
|
||||
fun foo1() {}
|
||||
|
||||
@Anno(value = nonConstFun())
|
||||
fun foo2() {}
|
||||
|
||||
@Anno(value = longArrayOf(nonConstLong()))
|
||||
fun foo3() {}
|
||||
|
||||
@Anno(value = [nonConstLong()])
|
||||
fun foo4() {}
|
||||
|
||||
@Anno(value = *nonConstArray)
|
||||
fun bar1() {}
|
||||
|
||||
@Anno(*nonConstArray)
|
||||
fun bar2() {}
|
||||
+26
@@ -0,0 +1,26 @@
|
||||
// !LANGUAGE: +ProhibitNonConstValuesAsVarargsInAnnotations, +ProhibitAssigningSingleElementsToVarargsInNamedForm
|
||||
|
||||
val nonConstArray = longArrayOf(0)
|
||||
fun nonConstFun(): LongArray = TODO()
|
||||
|
||||
fun nonConstLong(): Long = TODO()
|
||||
|
||||
annotation class Anno(vararg val value: Long)
|
||||
|
||||
@Anno(value = nonConstArray)
|
||||
fun foo1() {}
|
||||
|
||||
@Anno(value = nonConstFun())
|
||||
fun foo2() {}
|
||||
|
||||
@Anno(value = longArrayOf(nonConstLong()))
|
||||
fun foo3() {}
|
||||
|
||||
@Anno(value = [nonConstLong()])
|
||||
fun foo4() {}
|
||||
|
||||
@Anno(value = *nonConstArray)
|
||||
fun bar1() {}
|
||||
|
||||
@Anno(*nonConstArray)
|
||||
fun bar2() {}
|
||||
+46
@@ -0,0 +1,46 @@
|
||||
// !WITH_NEW_INFERENCE
|
||||
// !LANGUAGE: +ArrayLiteralsInAnnotations, +AssigningArraysToVarargsInNamedFormInAnnotations
|
||||
|
||||
// FILE: JavaAnn.java
|
||||
|
||||
@interface JavaAnn {
|
||||
String[] value() default {};
|
||||
String[] path() default {};
|
||||
}
|
||||
|
||||
// FILE: test.kt
|
||||
|
||||
annotation class Ann(vararg val s: String)
|
||||
|
||||
@Ann(s = arrayOf())
|
||||
fun test1() {}
|
||||
|
||||
@Ann(s = intArrayOf())
|
||||
fun test2() {}
|
||||
|
||||
@Ann(s = arrayOf(1))
|
||||
fun test3() {}
|
||||
|
||||
@Ann("value1", "value2")
|
||||
fun test4() {}
|
||||
|
||||
@Ann(s = ["value"])
|
||||
fun test5() {}
|
||||
|
||||
@JavaAnn(value = arrayOf("value"))
|
||||
fun jTest1() {}
|
||||
|
||||
@JavaAnn(value = ["value"])
|
||||
fun jTest2() {}
|
||||
|
||||
@JavaAnn(value = ["value"], path = ["path"])
|
||||
fun jTest3() {}
|
||||
|
||||
|
||||
annotation class IntAnn(vararg val i: Int)
|
||||
|
||||
@IntAnn(i = [1, 2])
|
||||
fun foo1() {}
|
||||
|
||||
@IntAnn(i = intArrayOf(0))
|
||||
fun foo2() {}
|
||||
+30
@@ -0,0 +1,30 @@
|
||||
// !LANGUAGE: +ArrayLiteralsInAnnotations, +AssigningArraysToVarargsInNamedFormInAnnotations, +ProhibitAssigningSingleElementsToVarargsInNamedForm
|
||||
|
||||
// FILE: JavaAnn.java
|
||||
|
||||
@interface JavaAnn {
|
||||
String[] value() default {};
|
||||
String[] path() default {};
|
||||
}
|
||||
|
||||
// FILE: test.kt
|
||||
|
||||
annotation class Ann(vararg val s: String)
|
||||
|
||||
@Ann(s = "value")
|
||||
fun test1() {}
|
||||
|
||||
@Ann(s = *arrayOf("value"))
|
||||
fun test2() {}
|
||||
|
||||
@Ann(s = *["value"])
|
||||
fun test3() {}
|
||||
|
||||
@JavaAnn(value = "value")
|
||||
fun test4() {}
|
||||
|
||||
@JavaAnn("value", path = arrayOf("path"))
|
||||
fun test5() {}
|
||||
|
||||
@JavaAnn("value", path = ["path"])
|
||||
fun test6() {}
|
||||
+30
@@ -0,0 +1,30 @@
|
||||
// !LANGUAGE: +ArrayLiteralsInAnnotations, +AssigningArraysToVarargsInNamedFormInAnnotations, -ProhibitAssigningSingleElementsToVarargsInNamedForm
|
||||
|
||||
// FILE: JavaAnn.java
|
||||
|
||||
@interface JavaAnn {
|
||||
String[] value() default {};
|
||||
String[] path() default {};
|
||||
}
|
||||
|
||||
// FILE: test.kt
|
||||
|
||||
annotation class Ann(vararg val s: String)
|
||||
|
||||
@Ann(s = "value")
|
||||
fun test1() {}
|
||||
|
||||
@Ann(s = *arrayOf("value"))
|
||||
fun test2() {}
|
||||
|
||||
@Ann(s = *["value"])
|
||||
fun test3() {}
|
||||
|
||||
@JavaAnn(value = "value")
|
||||
fun test4() {}
|
||||
|
||||
@JavaAnn("value", path = arrayOf("path"))
|
||||
fun test5() {}
|
||||
|
||||
@JavaAnn("value", path = ["path"])
|
||||
fun test6() {}
|
||||
+60
@@ -0,0 +1,60 @@
|
||||
// !LANGUAGE: +AssigningArraysToVarargsInNamedFormInAnnotations, +ProhibitAssigningSingleElementsToVarargsInNamedForm
|
||||
// !DIAGNOSTICS: -UNUSED_PARAMETER, -UNUSED_VARIABLE
|
||||
// !WITH_NEW_INFERENCE
|
||||
|
||||
fun foo(vararg s: Int) {}
|
||||
|
||||
open class Cls(vararg p: Long)
|
||||
|
||||
fun test(i: IntArray) {
|
||||
foo(s = 1)
|
||||
<!INAPPLICABLE_CANDIDATE!>foo<!>(s = i)
|
||||
foo(s = *i)
|
||||
<!INAPPLICABLE_CANDIDATE!>foo<!>(s = intArrayOf(1))
|
||||
foo(s = *intArrayOf(1))
|
||||
foo(1)
|
||||
|
||||
Cls(p = 1)
|
||||
|
||||
class Sub : Cls(p = 1)
|
||||
|
||||
val c = object : Cls(p = 1) {}
|
||||
|
||||
foo(s = *intArrayOf(elements = 1))
|
||||
}
|
||||
|
||||
|
||||
fun anyFoo(vararg a: Any) {}
|
||||
|
||||
fun testAny() {
|
||||
anyFoo(a = "")
|
||||
anyFoo(a = arrayOf(""))
|
||||
anyFoo(a = *arrayOf(""))
|
||||
}
|
||||
|
||||
fun <T> genFoo(vararg t: T) {}
|
||||
|
||||
fun testGen() {
|
||||
genFoo<Int>(t = 1)
|
||||
genFoo<Int?>(t = null)
|
||||
genFoo<Array<Int>>(t = arrayOf())
|
||||
genFoo<Array<Int>>(t = *arrayOf(arrayOf()))
|
||||
|
||||
genFoo(t = "")
|
||||
genFoo(t = arrayOf(""))
|
||||
genFoo(t = *arrayOf(""))
|
||||
}
|
||||
|
||||
fun manyFoo(vararg v: Int) {}
|
||||
fun manyFoo(vararg s: String) {}
|
||||
|
||||
fun testMany(a: Any) {
|
||||
manyFoo(v = 1)
|
||||
manyFoo(s = "")
|
||||
|
||||
<!INAPPLICABLE_CANDIDATE!>manyFoo<!>(a)
|
||||
<!INAPPLICABLE_CANDIDATE!>manyFoo<!>(v = a)
|
||||
<!INAPPLICABLE_CANDIDATE!>manyFoo<!>(s = a)
|
||||
manyFoo(v = a as Int)
|
||||
manyFoo(s = a as String)
|
||||
}
|
||||
+60
@@ -0,0 +1,60 @@
|
||||
// !LANGUAGE: +AssigningArraysToVarargsInNamedFormInAnnotations, -ProhibitAssigningSingleElementsToVarargsInNamedForm
|
||||
// !DIAGNOSTICS: -UNUSED_PARAMETER, -UNUSED_VARIABLE
|
||||
// !WITH_NEW_INFERENCE
|
||||
|
||||
fun foo(vararg s: Int) {}
|
||||
|
||||
open class Cls(vararg p: Long)
|
||||
|
||||
fun test(i: IntArray) {
|
||||
foo(s = 1)
|
||||
<!INAPPLICABLE_CANDIDATE!>foo<!>(s = i)
|
||||
foo(s = *i)
|
||||
<!INAPPLICABLE_CANDIDATE!>foo<!>(s = intArrayOf(1))
|
||||
foo(s = *intArrayOf(1))
|
||||
foo(1)
|
||||
|
||||
Cls(p = 1)
|
||||
|
||||
class Sub : Cls(p = 1)
|
||||
|
||||
val c = object : Cls(p = 1) {}
|
||||
|
||||
foo(s = *intArrayOf(elements = 1))
|
||||
}
|
||||
|
||||
|
||||
fun anyFoo(vararg a: Any) {}
|
||||
|
||||
fun testAny() {
|
||||
anyFoo(a = "")
|
||||
anyFoo(a = arrayOf(""))
|
||||
anyFoo(a = *arrayOf(""))
|
||||
}
|
||||
|
||||
fun <T> genFoo(vararg t: T) {}
|
||||
|
||||
fun testGen() {
|
||||
genFoo<Int>(t = 1)
|
||||
genFoo<Int?>(t = null)
|
||||
genFoo<Array<Int>>(t = arrayOf())
|
||||
genFoo<Array<Int>>(t = *arrayOf(arrayOf()))
|
||||
|
||||
genFoo(t = "")
|
||||
genFoo(t = arrayOf(""))
|
||||
genFoo(t = *arrayOf(""))
|
||||
}
|
||||
|
||||
fun manyFoo(vararg v: Int) {}
|
||||
fun manyFoo(vararg s: String) {}
|
||||
|
||||
fun testMany(a: Any) {
|
||||
manyFoo(v = 1)
|
||||
manyFoo(s = "")
|
||||
|
||||
<!INAPPLICABLE_CANDIDATE!>manyFoo<!>(a)
|
||||
<!INAPPLICABLE_CANDIDATE!>manyFoo<!>(v = a)
|
||||
<!INAPPLICABLE_CANDIDATE!>manyFoo<!>(s = a)
|
||||
manyFoo(v = a as Int)
|
||||
manyFoo(s = a as String)
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
// FILE: kotlin.kt
|
||||
fun foo() {
|
||||
JavaClass()
|
||||
JavaClass("")
|
||||
}
|
||||
|
||||
// FILE: JavaClass.java
|
||||
|
||||
public class JavaClass {
|
||||
public JavaClass() { }
|
||||
|
||||
public JavaClass(String... ss) { }
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
// FILE: JavaClass.java
|
||||
public class JavaClass {
|
||||
void from(String s) {}
|
||||
void from(String... s) {}
|
||||
}
|
||||
|
||||
// FILE: kotlin.kt
|
||||
fun main() {
|
||||
JavaClass().from()
|
||||
JavaClass().from("")
|
||||
JavaClass().from("", "")
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
class A(vararg t : Int) {
|
||||
init {
|
||||
val t1 : IntArray = t
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
class A(vararg val t : Int) {
|
||||
init {
|
||||
val t1 : IntArray = t
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
// !DIAGNOSTICS: -UNUSED_PARAMETER
|
||||
|
||||
fun printAll(vararg a : Any) {}
|
||||
|
||||
fun main(args: Array<String>) {
|
||||
<!INAPPLICABLE_CANDIDATE!>printAll<!>(*args) // Shouldn't be an error
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
// KT-422 Tune literal typing rules so that varargs overloaded by primitive types work
|
||||
|
||||
fun <T> foo(vararg t : T) = t
|
||||
fun foo(vararg a: Int) = a
|
||||
fun foo(vararg a: Long) = a
|
||||
|
||||
fun test() {
|
||||
foo(1, 2, 3) // Error, but should be foo of ints
|
||||
}
|
||||
|
||||
fun <T> array(vararg elements : T) = elements
|
||||
fun array(vararg elements : Int) = elements
|
||||
|
||||
fun test1() {
|
||||
array("A", "A")
|
||||
array(1, 1)
|
||||
}
|
||||
+49
@@ -0,0 +1,49 @@
|
||||
// !WITH_NEW_INFERENCE
|
||||
// !LANGUAGE: +ArrayLiteralsInAnnotations, -AssigningArraysToVarargsInNamedFormInAnnotations
|
||||
|
||||
// FILE: JavaAnn.java
|
||||
|
||||
@interface JavaAnn {
|
||||
String[] value() default {};
|
||||
String[] path() default {};
|
||||
}
|
||||
|
||||
// FILE: test.kt
|
||||
|
||||
annotation class Ann(vararg val s: String)
|
||||
|
||||
@Ann(s = arrayOf())
|
||||
fun test1() {}
|
||||
|
||||
@Ann(s = intArrayOf())
|
||||
fun test2() {}
|
||||
|
||||
@Ann(s = arrayOf(1))
|
||||
fun test3() {}
|
||||
|
||||
@Ann(s = ["value"])
|
||||
fun test5() {}
|
||||
|
||||
@JavaAnn(value = arrayOf("value"))
|
||||
fun jTest1() {}
|
||||
|
||||
@JavaAnn(value = ["value"])
|
||||
fun jTest2() {}
|
||||
|
||||
@JavaAnn(value = ["value"], path = ["path"])
|
||||
fun jTest3() {}
|
||||
|
||||
annotation class IntAnn(vararg val i: Int)
|
||||
|
||||
@IntAnn(i = [1, 2])
|
||||
fun foo1() {}
|
||||
|
||||
@IntAnn(i = intArrayOf(0))
|
||||
fun foo2() {}
|
||||
|
||||
fun foo(vararg i: Int) {}
|
||||
|
||||
@Ann(s = "value")
|
||||
fun dep1() {
|
||||
foo(i = 1)
|
||||
}
|
||||
Vendored
+20
@@ -0,0 +1,20 @@
|
||||
// !LANGUAGE: +ProhibitAssigningSingleElementsToVarargsInNamedForm
|
||||
// !DIAGNOSTICS: -UNUSED_PARAMETER
|
||||
|
||||
annotation class Anno1(vararg val s: String)
|
||||
annotation class Anno2(vararg val i: Int)
|
||||
|
||||
@Anno1(s = "foo")
|
||||
@Anno2(i = *intArrayOf(1))
|
||||
fun f1() {}
|
||||
|
||||
@Anno1(s = ["foo"])
|
||||
@Anno2(i = intArrayOf(1))
|
||||
fun f2() {}
|
||||
|
||||
fun foo(vararg ints: Int) {}
|
||||
|
||||
fun test() {
|
||||
foo(ints = 1)
|
||||
foo(ints = *intArrayOf(1))
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
class My {
|
||||
var x: String = ""
|
||||
set(vararg value) {
|
||||
x = value
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
package test
|
||||
|
||||
class CompositeIterator<T>(vararg iterators: java.util.Iterator<T>){
|
||||
val iteratorsIter = iterators.iterator()
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
// !DIAGNOSTICS: -UNUSED_PARAMETER
|
||||
|
||||
fun testVarargOfNothing(vararg v: Nothing) {}
|
||||
|
||||
fun testVarargOfNNothing(vararg v: Nothing?) {}
|
||||
|
||||
fun <T : Nothing?> testVarargOfT(vararg v: T) {}
|
||||
|
||||
fun outer() {
|
||||
fun testVarargOfNothing(vararg v: Nothing) {}
|
||||
|
||||
fun testVarargOfNNothing(vararg v: Nothing?) {}
|
||||
|
||||
fun <T : Nothing?> testVarargOfT(vararg v: T) {}
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
// !LANGUAGE: +NewInference
|
||||
// !DIAGNOSTICS: -UNUSED_PARAMETER
|
||||
|
||||
fun stringVararg(vararg args: String) {}
|
||||
fun intVararg(vararg args: Int) {}
|
||||
fun numberVararg(vararg args: Number) {}
|
||||
|
||||
fun useStrings(fn: (String, String, String) -> Unit) = fn("foo", "bar", "boo")
|
||||
fun useStringArray(fn: (Array<String>) -> Unit) = fn(arrayOf("foo", "bar", "boo"))
|
||||
|
||||
fun useIntArray(fn: (Array<Int>) -> Unit) = fn(arrayOf(1, 2, 3))
|
||||
fun usePrimitiveIntArray(fn: (IntArray) -> Unit) = fn(intArrayOf(4, 5, 6))
|
||||
|
||||
fun useMixedStringArgs1(fn: (String, Array<String>) -> Unit) = fn("foo", arrayOf("bar", "baz"))
|
||||
fun useMixedStringArgs2(fn: (Array<String>, String) -> Unit) = fn(arrayOf("foo", "bar"), "baz")
|
||||
fun useMixedStringArgs3(fn: (String, Array<String>, String) -> Unit) = fn("foo", arrayOf("bar", "baz"), "boo")
|
||||
fun useTwoStringArrays(fn: (Array<String>, Array<String>) -> Unit) = fn(arrayOf("foo", "bar"), arrayOf("baz", "boo"))
|
||||
|
||||
fun test() {
|
||||
<!INAPPLICABLE_CANDIDATE!>useStrings<!>(::stringVararg)
|
||||
useStringArray(::stringVararg)
|
||||
<!INAPPLICABLE_CANDIDATE!>useIntArray<!>(::numberVararg)
|
||||
usePrimitiveIntArray(::intVararg)
|
||||
<!INAPPLICABLE_CANDIDATE!>useIntArray<!>(::intVararg)
|
||||
<!INAPPLICABLE_CANDIDATE!>useMixedStringArgs1<!>(::stringVararg)
|
||||
<!INAPPLICABLE_CANDIDATE!>useMixedStringArgs2<!>(::stringVararg)
|
||||
<!INAPPLICABLE_CANDIDATE!>useMixedStringArgs3<!>(::stringVararg)
|
||||
<!INAPPLICABLE_CANDIDATE!>useTwoStringArrays<!>(::stringVararg)
|
||||
}
|
||||
+13
@@ -0,0 +1,13 @@
|
||||
fun f(vararg t : Int, f : ()->Unit) {
|
||||
}
|
||||
|
||||
fun test() {
|
||||
f {}
|
||||
f() {}
|
||||
f(1) {
|
||||
|
||||
}
|
||||
f(1, 2) {
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
// !CHECK_TYPE
|
||||
|
||||
fun test(vararg a: String) {
|
||||
a checkType { <!UNRESOLVED_REFERENCE!>_<!><Array<out String>>() }
|
||||
|
||||
foo(a) checkType { <!UNRESOLVED_REFERENCE!>_<!><Array<out String>>() }
|
||||
}
|
||||
|
||||
fun <T> test1(vararg t: T) {
|
||||
t checkType { <!UNRESOLVED_REFERENCE!>_<!><Array<out T>>() }
|
||||
}
|
||||
|
||||
fun <T> foo(a: Array<T>): Array<T> = a
|
||||
@@ -0,0 +1,9 @@
|
||||
// !DIAGNOSTICS: -UNUSED_PARAMETER
|
||||
|
||||
fun bar(vararg a: String) {}
|
||||
|
||||
fun test2(a: Array<String>, b: Array<out String>) {
|
||||
bar(*a)
|
||||
<!INAPPLICABLE_CANDIDATE!>bar<!>(*b)
|
||||
<!INAPPLICABLE_CANDIDATE!>bar<!>("", *a, *b, "")
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
// !CHECK_TYPE
|
||||
|
||||
fun <T: Any> foo(vararg ts: T): T? = null
|
||||
|
||||
class Pair<A>(a: A)
|
||||
|
||||
fun test() {
|
||||
val v = foo(Pair(1))
|
||||
<!INAPPLICABLE_CANDIDATE!>checkSubtype<!><Int>(v) // check that it is not error type
|
||||
}
|
||||
Reference in New Issue
Block a user