[FIR] Resolve array literal with non-primitive-array expected type as arrayOf call

This lets us properly complete the call which fixes some issues with
false-positive type mismatches.
This change doesn't apply to array literals in annotation calls yet
because they are resolved as context-dependent.
This will be adapted in a following commit.

#KT-59581
This commit is contained in:
Kirill Rakhman
2023-07-04 14:27:43 +02:00
committed by Space Team
parent 4ead02271b
commit ff6b3350ae
16 changed files with 92 additions and 118 deletions
@@ -1,13 +1,16 @@
import kotlin.reflect.KClass
annotation class Foo(
val a: Array<String> = ["/"],
val b: Array<String> = [],
val c: Array<String> = ["1", "2"]
val c: Array<String> = ["1", "2"],
val d: Array<KClass<*>> = [Int::class, Array<Int>::class],
)
annotation class Bar(
val a: Array<String> = <!INITIALIZER_TYPE_MISMATCH!>[' ']<!>,
val a: Array<String> = <!TYPE_MISMATCH, TYPE_MISMATCH!>[' ']<!>,
val b: Array<String> = ["", <!EMPTY_CHARACTER_LITERAL!>''<!>],
val c: Array<String> = <!INITIALIZER_TYPE_MISMATCH!>[1]<!>
val c: Array<String> = <!TYPE_MISMATCH, TYPE_MISMATCH!>[1]<!>
)
annotation class Base(
@@ -19,5 +22,5 @@ annotation class Base(
annotation class Err(
val a: IntArray = <!INITIALIZER_TYPE_MISMATCH!>[1L]<!>,
val b: Array<String> = <!INITIALIZER_TYPE_MISMATCH!>[1]<!>
val b: Array<String> = <!TYPE_MISMATCH, TYPE_MISMATCH!>[1]<!>
)