[FIR2IR] KT-57211: Support unsigned arrayOf-s in fir2ir
^KT-57211 Fixed Merge-request: KT-MR-9294 Merged-by: Nikolay Lunyak <Nikolay.Lunyak@jetbrains.com>
This commit is contained in:
committed by
Space Team
parent
a5e5e093c3
commit
505edb9746
@@ -467,6 +467,10 @@ class IrBuiltInsOverFir(
|
||||
}.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
|
||||
|
||||
+6
@@ -398,6 +398,12 @@ class IrBuiltInsOverDescriptors(
|
||||
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)
|
||||
|
||||
@@ -115,6 +115,7 @@ abstract class IrBuiltIns {
|
||||
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>
|
||||
|
||||
@@ -67,6 +67,7 @@ fun IrType.getArrayElementType(irBuiltIns: IrBuiltIns): IrType =
|
||||
} else {
|
||||
val classifier = this.classOrNull!!
|
||||
irBuiltIns.primitiveArrayElementTypes[classifier]
|
||||
?: irBuiltIns.unsignedArraysElementTypes[classifier]
|
||||
?: throw AssertionError("Primitive array expected: $classifier")
|
||||
}
|
||||
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user