[JS IR] Treat char as inline class no matter how it's declared

This commit is contained in:
Sergej Jaskiewicz
2021-12-10 16:35:29 +03:00
committed by Space
parent 4f13717fea
commit 41acdefce9
@@ -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