diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/utils/JsInlineClassesUtils.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/utils/JsInlineClassesUtils.kt index 5bbfbed2837..f31d4a138ba 100644 --- a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/utils/JsInlineClassesUtils.kt +++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/utils/JsInlineClassesUtils.kt @@ -9,6 +9,7 @@ import org.jetbrains.kotlin.ir.backend.js.JsCommonInlineClassesUtils import org.jetbrains.kotlin.ir.backend.js.JsIrBackendContext import org.jetbrains.kotlin.ir.declarations.IrClass import org.jetbrains.kotlin.ir.symbols.IrSimpleFunctionSymbol +import org.jetbrains.kotlin.ir.types.IdSignatureValues import org.jetbrains.kotlin.ir.types.IrSimpleType import org.jetbrains.kotlin.ir.types.IrType import org.jetbrains.kotlin.ir.types.isMarkedNullable @@ -38,8 +39,11 @@ class JsInlineClassesUtils(val context: JsIrBackendContext) : JsCommonInlineClas return null } + // Char is declared as a regular class, but we want to treat it as an inline class. + // We can't declare it as an inline/value class for compatibility reasons. + // For example, applying the === operator will stop working if Char becomes an inline class. override fun isClassInlineLike(klass: IrClass): Boolean = - klass.isInline + super.isClassInlineLike(klass) || klass.symbol.signature == IdSignatureValues._char override val boxIntrinsic: IrSimpleFunctionSymbol get() = context.intrinsics.jsBoxIntrinsic