diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/DeclarationOrigins.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/DeclarationOrigins.kt index 9c4114ee4b0..f15d2d938a5 100644 --- a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/DeclarationOrigins.kt +++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/DeclarationOrigins.kt @@ -13,7 +13,8 @@ object JsLoweredDeclarationOrigin : IrDeclarationOrigin { object JS_INTRINSICS_STUB : IrDeclarationOriginImpl("JS_INTRINSICS_STUB") object JS_CLOSURE_BOX_CLASS : IrStatementOriginImpl("JS_CLOSURE_BOX_CLASS") object JS_CLOSURE_BOX_CLASS_DECLARATION : IrDeclarationOriginImpl("JS_CLOSURE_BOX_CLASS_DECLARATION") - object BRIDGE_TO_EXTERNAL_FUNCTION : IrDeclarationOriginImpl("BRIDGE_TO_EXTERNAL_FUNCTION") + object BRIDGE_WITH_STABLE_NAME : IrDeclarationOriginImpl("BRIDGE_WITH_STABLE_NAME") + object BRIDGE_WITHOUT_STABLE_NAME : IrDeclarationOriginImpl("BRIDGE_WITHOUT_STABLE_NAME") object OBJECT_GET_INSTANCE_FUNCTION : IrDeclarationOriginImpl("OBJECT_GET_INSTANCE_FUNCTION") object JS_SHADOWED_EXPORT : IrDeclarationOriginImpl("JS_SHADOWED_EXPORT") } diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/export/ExportModelGenerator.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/export/ExportModelGenerator.kt index ef165e3d569..c38d763aa0e 100644 --- a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/export/ExportModelGenerator.kt +++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/export/ExportModelGenerator.kt @@ -324,8 +324,8 @@ class ExportModelGenerator(val context: JsIrBackendContext) { return Exportability.Prohibited("Suspend function") if (function.isFakeOverride) return Exportability.NotNeeded - if (function.origin == IrDeclarationOrigin.BRIDGE || - function.origin == JsLoweredDeclarationOrigin.BRIDGE_TO_EXTERNAL_FUNCTION || + if (function.origin == JsLoweredDeclarationOrigin.BRIDGE_WITHOUT_STABLE_NAME || + function.origin == JsLoweredDeclarationOrigin.BRIDGE_WITH_STABLE_NAME || function.origin == IrDeclarationOrigin.FUNCTION_FOR_DEFAULT_PARAMETER || function.origin == JsLoweredDeclarationOrigin.OBJECT_GET_INSTANCE_FUNCTION || function.origin == JsLoweredDeclarationOrigin.JS_SHADOWED_EXPORT diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/BridgesConstruction.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/BridgesConstruction.kt index da3b4300a67..ecf0b310afa 100644 --- a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/BridgesConstruction.kt +++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/BridgesConstruction.kt @@ -117,9 +117,9 @@ abstract class BridgesConstruction(val context: JsCommonBackendContext) : Declar val origin = if (bridge.hasStableJsName()) - JsLoweredDeclarationOrigin.BRIDGE_TO_EXTERNAL_FUNCTION + JsLoweredDeclarationOrigin.BRIDGE_WITH_STABLE_NAME else - IrDeclarationOrigin.BRIDGE + JsLoweredDeclarationOrigin.BRIDGE_WITHOUT_STABLE_NAME // TODO: Support offsets for debug info val irFunction = context.irFactory.buildFun { diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/utils/NameTables.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/utils/NameTables.kt index 631068d6826..3bf7300153e 100644 --- a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/utils/NameTables.kt +++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/utils/NameTables.kt @@ -5,10 +5,8 @@ package org.jetbrains.kotlin.ir.backend.js.utils -import org.jetbrains.kotlin.backend.common.ir.isMethodOfAny import org.jetbrains.kotlin.backend.common.ir.isTopLevel import org.jetbrains.kotlin.ir.IrElement -import org.jetbrains.kotlin.ir.backend.js.JsLoweredDeclarationOrigin import org.jetbrains.kotlin.ir.backend.js.lower.serialization.ir.JsManglerIr import org.jetbrains.kotlin.ir.declarations.* import org.jetbrains.kotlin.ir.expressions.IrBreak @@ -113,11 +111,7 @@ fun jsFunctionSignature(declaration: IrFunction): Signature { val declarationName = declaration.getJsNameOrKotlinName().asString() - val needsStableName = declaration.origin == JsLoweredDeclarationOrigin.BRIDGE_TO_EXTERNAL_FUNCTION || - declaration.hasStableJsName() || - (declaration as? IrSimpleFunction)?.isMethodOfAny() == true // Handle names for special functions - - if (needsStableName) { + if (declaration.hasStableJsName()) { return StableNameSignature(declarationName) } diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/utils/misc.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/utils/misc.kt index 7fe38e66a0e..010d91cc531 100644 --- a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/utils/misc.kt +++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/utils/misc.kt @@ -5,6 +5,7 @@ package org.jetbrains.kotlin.ir.backend.js.utils +import org.jetbrains.kotlin.backend.common.ir.isMethodOfAny import org.jetbrains.kotlin.ir.IrElement import org.jetbrains.kotlin.ir.UNDEFINED_OFFSET import org.jetbrains.kotlin.ir.backend.js.JsIrBackendContext @@ -23,10 +24,17 @@ import org.jetbrains.kotlin.name.Name fun TODO(element: IrElement): Nothing = TODO(element::class.java.simpleName + " is not supported yet here") fun IrFunction.hasStableJsName(): Boolean { + if ( + origin == JsLoweredDeclarationOrigin.BRIDGE_WITH_STABLE_NAME || + (this as? IrSimpleFunction)?.isMethodOfAny() == true // Handle names for special functions + ) { + return true + } + if ( origin == JsLoweredDeclarationOrigin.JS_SHADOWED_EXPORT || origin == IrDeclarationOrigin.FUNCTION_FOR_DEFAULT_PARAMETER || - origin == IrDeclarationOrigin.BRIDGE + origin == JsLoweredDeclarationOrigin.BRIDGE_WITHOUT_STABLE_NAME ) { return false }