[FIR] KT-37027: Add 'out' projection to vararg elements

This commit is contained in:
simon.ogorodnik
2020-02-26 17:43:57 +03:00
parent f405b3f827
commit f9483b1f4f
31 changed files with 111 additions and 147 deletions
@@ -12,5 +12,5 @@ fun Foo.bar(vararg x: Int) = ""
fun actualTest() {
<!INAPPLICABLE_CANDIDATE!>test<!>(<!UNRESOLVED_REFERENCE!>Foo::bar<!>)
test(Foo::bar)
}
@@ -7,7 +7,7 @@ class A<T> {
fun test(a: A<out CharSequence>, y: Array<out CharSequence>) {
a.foo("", "", "")
a.<!INAPPLICABLE_CANDIDATE!>foo<!>(*y)
a.foo(*y)
// TODO: TYPE_MISMATCH_DUE_TO_TYPE_PROJECTIONS probably redundant
a.<!INAPPLICABLE_CANDIDATE!>foo<!>(*y, "")
a.foo(*y, "")
}
+1 -1
View File
@@ -3,5 +3,5 @@
fun printAll(vararg a : Any) {}
fun main(args: Array<String>) {
<!INAPPLICABLE_CANDIDATE!>printAll<!>(*args) // Shouldn't be an error
printAll(*args) // Shouldn't be an error
}
@@ -19,7 +19,7 @@ fun useTwoStringArrays(fn: (Array<String>, Array<String>) -> Unit) = fn(arrayOf(
fun test() {
<!INAPPLICABLE_CANDIDATE!>useStrings<!>(::stringVararg)
useStringArray(::stringVararg)
<!INAPPLICABLE_CANDIDATE!>useIntArray<!>(::numberVararg)
useIntArray(::numberVararg)
usePrimitiveIntArray(::intVararg)
<!INAPPLICABLE_CANDIDATE!>useIntArray<!>(::intVararg)
<!INAPPLICABLE_CANDIDATE!>useMixedStringArgs1<!>(::stringVararg)
@@ -4,6 +4,6 @@ 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, "")
bar(*b)
bar("", *a, *b, "")
}
@@ -1,6 +1,6 @@
fun test() {
val p: Array<String> = arrayOf("a")
<!INAPPLICABLE_CANDIDATE!>foo<!>(*p)
foo(*p)
}
fun foo(vararg a: String?) = a