Don't report warning about changing execution order for varargs if it's inside an annotation

^KT-43110 Fixed
This commit is contained in:
Victor Petukhov
2020-11-03 16:18:20 +03:00
parent f052bc341c
commit 90ea64a0e5
12 changed files with 108 additions and 10 deletions
@@ -0,0 +1,23 @@
@Retention(AnnotationRetention.RUNTIME)
annotation class Anno(vararg val x: String, val y: String)
@Anno(x = [["a", "b"], ["a", "b"]], y = "a")
fun foo1() {}
@Anno(x = ["a", "b"], y = "a")
fun foo2() {}
<!INAPPLICABLE_CANDIDATE!>@Anno(x = arrayOf(arrayOf("a"), arrayOf("b")), y = "a")<!>
fun foo3() {}
@Anno(x = arrayOf("a", "b"), y = "a")
fun foo4() {}
@Retention(AnnotationRetention.RUNTIME)
annotation class Anno1(val x: Array<in String>, val y: String)
@Retention(AnnotationRetention.RUNTIME)
annotation class Anno2(vararg val x: String, val y: String)
@Anno1(x = ["", Anno2(x = [""], y = "")], y = "")
fun foo5() {}
@@ -0,0 +1,23 @@
@Retention(AnnotationRetention.RUNTIME)
annotation class Anno(vararg val x: String, val y: String)
@Anno(x = [<!TYPE_MISMATCH, TYPE_MISMATCH!>["a", "b"]<!>, <!TYPE_MISMATCH, TYPE_MISMATCH!>["a", "b"]<!>], y = "a")
fun foo1() {}
@Anno(x = ["a", "b"], y = "a")
fun foo2() {}
@Anno(x = <!TYPE_MISMATCH, TYPE_MISMATCH!>arrayOf(arrayOf("a"), arrayOf("b"))<!>, y = "a")
fun foo3() {}
@Anno(x = arrayOf("a", "b"), y = "a")
fun foo4() {}
@Retention(AnnotationRetention.RUNTIME)
annotation class Anno1(val x: Array<in String>, val y: String)
@Retention(AnnotationRetention.RUNTIME)
annotation class Anno2(vararg val x: String, val y: String)
@Anno1(x = ["", Anno2(x = [""], y = "")], y = "")
fun foo5() {}
@@ -0,0 +1,34 @@
package
@Anno(x = {{"a", "b"}, {"a", "b"}}, y = "a") public fun foo1(): kotlin.Unit
@Anno(x = {"a", "b"}, y = "a") public fun foo2(): kotlin.Unit
@Anno(x = {{"a"}, {"b"}}, y = "a") public fun foo3(): kotlin.Unit
@Anno(x = {"a", "b"}, y = "a") public fun foo4(): kotlin.Unit
@Anno1(x = {"", Anno2(x = {""}, y = "")}, y = "") public fun foo5(): kotlin.Unit
@kotlin.annotation.Retention(value = AnnotationRetention.RUNTIME) public final annotation class Anno : kotlin.Annotation {
public constructor Anno(/*0*/ vararg x: kotlin.String /*kotlin.Array<out kotlin.String>*/, /*1*/ y: kotlin.String)
public final val x: kotlin.Array<out kotlin.String>
public final val y: 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
}
@kotlin.annotation.Retention(value = AnnotationRetention.RUNTIME) public final annotation class Anno1 : kotlin.Annotation {
public constructor Anno1(/*0*/ x: kotlin.Array<in kotlin.String>, /*1*/ y: kotlin.String)
public final val x: kotlin.Array<in kotlin.String>
public final val y: 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
}
@kotlin.annotation.Retention(value = AnnotationRetention.RUNTIME) public final annotation class Anno2 : kotlin.Annotation {
public constructor Anno2(/*0*/ vararg x: kotlin.String /*kotlin.Array<out kotlin.String>*/, /*1*/ y: kotlin.String)
public final val x: kotlin.Array<out kotlin.String>
public final val y: 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
}