[JS IR] Treat char as inline class no matter how it's declared
This commit is contained in:
+5
-1
@@ -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.backend.js.JsIrBackendContext
|
||||||
import org.jetbrains.kotlin.ir.declarations.IrClass
|
import org.jetbrains.kotlin.ir.declarations.IrClass
|
||||||
import org.jetbrains.kotlin.ir.symbols.IrSimpleFunctionSymbol
|
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.IrSimpleType
|
||||||
import org.jetbrains.kotlin.ir.types.IrType
|
import org.jetbrains.kotlin.ir.types.IrType
|
||||||
import org.jetbrains.kotlin.ir.types.isMarkedNullable
|
import org.jetbrains.kotlin.ir.types.isMarkedNullable
|
||||||
@@ -38,8 +39,11 @@ class JsInlineClassesUtils(val context: JsIrBackendContext) : JsCommonInlineClas
|
|||||||
return null
|
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 =
|
override fun isClassInlineLike(klass: IrClass): Boolean =
|
||||||
klass.isInline
|
super.isClassInlineLike(klass) || klass.symbol.signature == IdSignatureValues._char
|
||||||
|
|
||||||
override val boxIntrinsic: IrSimpleFunctionSymbol
|
override val boxIntrinsic: IrSimpleFunctionSymbol
|
||||||
get() = context.intrinsics.jsBoxIntrinsic
|
get() = context.intrinsics.jsBoxIntrinsic
|
||||||
|
|||||||
Reference in New Issue
Block a user