Fix .equals for instantiated annotations with unsigned array types.

#KT-53876 Fixed
This commit is contained in:
Leonid Startsev
2022-09-28 17:19:34 +02:00
committed by Space Team
parent 0fea8073ef
commit ccdb6fc599
12 changed files with 92 additions and 13 deletions
@@ -20,6 +20,7 @@ import org.jetbrains.kotlin.ir.types.IrType
import org.jetbrains.kotlin.ir.types.isArray
import org.jetbrains.kotlin.ir.util.isAnnotationClass
import org.jetbrains.kotlin.ir.util.isPrimitiveArray
import org.jetbrains.kotlin.ir.util.isUnsignedArray
// JS PIR (and IC) requires DeclarationTransformer instead of FileLoweringPass
@@ -53,7 +54,7 @@ class JsAnnotationImplementationTransformer(val jsContext: JsIrBackendContext) :
override fun getArrayContentEqualsSymbol(type: IrType) =
when {
type.isPrimitiveArray() -> arraysContentEquals[type]
type.isPrimitiveArray() || type.isUnsignedArray() -> arraysContentEquals[type]
else -> arraysContentEquals.entries.singleOrNull { (k, _) -> k.isArray() }?.value
} ?: compilationException("Can't find an Arrays.contentEquals method for array type", type)