diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/JsIntrinsics.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/JsIntrinsics.kt index 86050ac9a0c..f58a6310878 100644 --- a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/JsIntrinsics.kt +++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/JsIntrinsics.kt @@ -308,6 +308,8 @@ class JsIntrinsics(private val irBuiltIns: IrBuiltIns, val context: JsIrBackendC val readSharedBox = defineReadSharedBox() val writeSharedBox = defineWriteSharedBox() + val jsUndefined = defineJsUndefinedIntrinsic() + // Helpers: private fun getInternalFunction(name: String) = @@ -401,6 +403,14 @@ class JsIntrinsics(private val irBuiltIns: IrBuiltIns, val context: JsIrBackendC } } + private fun defineJsUndefinedIntrinsic(): IrSimpleFunction { + return irFactory.addFunction(externalPackageFragment) { + name = Name.identifier("\$undefined") + }.apply { + returnType = context.irBuiltIns.nothingNType + } + } + private fun defineEs6DefaultTypeIntrinsic(): IrSimpleFunction { return irFactory.addFunction(externalPackageFragment) { name = Name.identifier("DefaultType") diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/transformers/irToJs/JsIntrinsicTransformers.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/transformers/irToJs/JsIntrinsicTransformers.kt index 4c4070c8700..20b6497b1cd 100644 --- a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/transformers/irToJs/JsIntrinsicTransformers.kt +++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/transformers/irToJs/JsIntrinsicTransformers.kt @@ -235,6 +235,9 @@ class JsIntrinsicTransformers(backendContext: JsIrBackendContext) { val value = args[1] jsAssignment(JsNameRef(Namer.SHARED_BOX_V, box), value) } + add(intrinsics.jsUndefined) { call: IrCall, context: JsGenerationContext -> + JsPrefixOperation(JsUnaryOperator.VOID, JsIntLiteral(1)) + } } }