[FIR2IR] KT-57211: Support unsigned arrayOf-s in fir2ir

^KT-57211 Fixed
diff --git a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/IrBuiltInsOverFir.kt b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/IrBuiltInsOverFir.kt
index 81dd8a7..fb3c724 100644
--- a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/IrBuiltInsOverFir.kt
+++ b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/IrBuiltInsOverFir.kt
@@ -467,6 +467,10 @@
         }.toMap()
     }
 
+    override val unsignedArraysElementTypes: Map<IrClassSymbol, IrType?> by lazy {
+        unsignedTypesToUnsignedArrays.map { (k,v) -> v to referenceClassByClassId(k.classId)?.owner?.defaultType }.toMap()
+    }
+
     override fun getKPropertyClass(mutable: Boolean, n: Int): IrClassSymbol = when (n) {
         0 -> if (mutable) kMutableProperty0Class else kProperty0Class
         1 -> if (mutable) kMutableProperty1Class else kProperty1Class
diff --git a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/descriptors/IrBuiltInsOverDescriptors.kt b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/descriptors/IrBuiltInsOverDescriptors.kt
index d0f5e4d..a1f55f7 100644
--- a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/descriptors/IrBuiltInsOverDescriptors.kt
+++ b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/descriptors/IrBuiltInsOverDescriptors.kt
@@ -398,6 +398,12 @@
             if (array == null) null else unsignedType to array
         }.toMap()
 
+    override val unsignedArraysElementTypes: Map<IrClassSymbol, IrType?> by lazy {
+        unsignedTypesToUnsignedArrays.map { (k, v) ->
+            v to builtIns.builtInsModule.findClassAcrossModuleDependencies(k.classId)?.defaultType?.toIrType()
+        }.toMap()
+    }
+
     override val lessFunByOperandType = primitiveIrTypesWithComparisons.defineComparisonOperatorForEachIrType(BuiltInOperatorNames.LESS)
     override val lessOrEqualFunByOperandType =
         primitiveIrTypesWithComparisons.defineComparisonOperatorForEachIrType(BuiltInOperatorNames.LESS_OR_EQUAL)
diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/IrBuiltIns.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/IrBuiltIns.kt
index 6b77978..7a8186c 100644
--- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/IrBuiltIns.kt
+++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/IrBuiltIns.kt
@@ -115,6 +115,7 @@
     abstract val primitiveArrayForType: Map<IrType?, IrClassSymbol>
 
     abstract val unsignedTypesToUnsignedArrays: Map<UnsignedType, IrClassSymbol>
+    abstract val unsignedArraysElementTypes: Map<IrClassSymbol, IrType?>
 
     abstract val lessFunByOperandType: Map<IrClassifierSymbol, IrSimpleFunctionSymbol>
     abstract val lessOrEqualFunByOperandType: Map<IrClassifierSymbol, IrSimpleFunctionSymbol>
diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/types/IrTypeUtils.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/types/IrTypeUtils.kt
index ac7211e..09b52d5 100644
--- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/types/IrTypeUtils.kt
+++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/types/IrTypeUtils.kt
@@ -67,6 +67,7 @@
     } else {
         val classifier = this.classOrNull!!
         irBuiltIns.primitiveArrayElementTypes[classifier]
+            ?: irBuiltIns.unsignedArraysElementTypes[classifier]
             ?: throw AssertionError("Primitive array expected: $classifier")
     }
 
diff --git a/compiler/testData/codegen/bytecodeListing/inlineClasses/annotationGetters.kt b/compiler/testData/codegen/bytecodeListing/inlineClasses/annotationGetters.kt
index fdc5f70..c7bbcf7 100644
--- a/compiler/testData/codegen/bytecodeListing/inlineClasses/annotationGetters.kt
+++ b/compiler/testData/codegen/bytecodeListing/inlineClasses/annotationGetters.kt
@@ -1,9 +1,6 @@
 // !LANGUAGE: +InlineClasses
 // WITH_STDLIB
 
-// IGNORE_BACKEND_K2: JVM_IR
-// FIR status: KT-57211 K2: incorrect "error: an annotation argument must be a compile-time constant" on unsigned array in annotation argument
-
 annotation class Ann(
     val u: UInt,
     val uba: UByteArray,