[JS IR] Use origins for bridge with and without stable names
^KT-44415 fixed
This commit is contained in:
@@ -13,7 +13,8 @@ object JsLoweredDeclarationOrigin : IrDeclarationOrigin {
|
|||||||
object JS_INTRINSICS_STUB : IrDeclarationOriginImpl("JS_INTRINSICS_STUB")
|
object JS_INTRINSICS_STUB : IrDeclarationOriginImpl("JS_INTRINSICS_STUB")
|
||||||
object JS_CLOSURE_BOX_CLASS : IrStatementOriginImpl("JS_CLOSURE_BOX_CLASS")
|
object JS_CLOSURE_BOX_CLASS : IrStatementOriginImpl("JS_CLOSURE_BOX_CLASS")
|
||||||
object JS_CLOSURE_BOX_CLASS_DECLARATION : IrDeclarationOriginImpl("JS_CLOSURE_BOX_CLASS_DECLARATION")
|
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 OBJECT_GET_INSTANCE_FUNCTION : IrDeclarationOriginImpl("OBJECT_GET_INSTANCE_FUNCTION")
|
||||||
object JS_SHADOWED_EXPORT : IrDeclarationOriginImpl("JS_SHADOWED_EXPORT")
|
object JS_SHADOWED_EXPORT : IrDeclarationOriginImpl("JS_SHADOWED_EXPORT")
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-2
@@ -324,8 +324,8 @@ class ExportModelGenerator(val context: JsIrBackendContext) {
|
|||||||
return Exportability.Prohibited("Suspend function")
|
return Exportability.Prohibited("Suspend function")
|
||||||
if (function.isFakeOverride)
|
if (function.isFakeOverride)
|
||||||
return Exportability.NotNeeded
|
return Exportability.NotNeeded
|
||||||
if (function.origin == IrDeclarationOrigin.BRIDGE ||
|
if (function.origin == JsLoweredDeclarationOrigin.BRIDGE_WITHOUT_STABLE_NAME ||
|
||||||
function.origin == JsLoweredDeclarationOrigin.BRIDGE_TO_EXTERNAL_FUNCTION ||
|
function.origin == JsLoweredDeclarationOrigin.BRIDGE_WITH_STABLE_NAME ||
|
||||||
function.origin == IrDeclarationOrigin.FUNCTION_FOR_DEFAULT_PARAMETER ||
|
function.origin == IrDeclarationOrigin.FUNCTION_FOR_DEFAULT_PARAMETER ||
|
||||||
function.origin == JsLoweredDeclarationOrigin.OBJECT_GET_INSTANCE_FUNCTION ||
|
function.origin == JsLoweredDeclarationOrigin.OBJECT_GET_INSTANCE_FUNCTION ||
|
||||||
function.origin == JsLoweredDeclarationOrigin.JS_SHADOWED_EXPORT
|
function.origin == JsLoweredDeclarationOrigin.JS_SHADOWED_EXPORT
|
||||||
|
|||||||
+2
-2
@@ -117,9 +117,9 @@ abstract class BridgesConstruction(val context: JsCommonBackendContext) : Declar
|
|||||||
|
|
||||||
val origin =
|
val origin =
|
||||||
if (bridge.hasStableJsName())
|
if (bridge.hasStableJsName())
|
||||||
JsLoweredDeclarationOrigin.BRIDGE_TO_EXTERNAL_FUNCTION
|
JsLoweredDeclarationOrigin.BRIDGE_WITH_STABLE_NAME
|
||||||
else
|
else
|
||||||
IrDeclarationOrigin.BRIDGE
|
JsLoweredDeclarationOrigin.BRIDGE_WITHOUT_STABLE_NAME
|
||||||
|
|
||||||
// TODO: Support offsets for debug info
|
// TODO: Support offsets for debug info
|
||||||
val irFunction = context.irFactory.buildFun {
|
val irFunction = context.irFactory.buildFun {
|
||||||
|
|||||||
@@ -5,10 +5,8 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.ir.backend.js.utils
|
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.backend.common.ir.isTopLevel
|
||||||
import org.jetbrains.kotlin.ir.IrElement
|
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.backend.js.lower.serialization.ir.JsManglerIr
|
||||||
import org.jetbrains.kotlin.ir.declarations.*
|
import org.jetbrains.kotlin.ir.declarations.*
|
||||||
import org.jetbrains.kotlin.ir.expressions.IrBreak
|
import org.jetbrains.kotlin.ir.expressions.IrBreak
|
||||||
@@ -113,11 +111,7 @@ fun jsFunctionSignature(declaration: IrFunction): Signature {
|
|||||||
|
|
||||||
val declarationName = declaration.getJsNameOrKotlinName().asString()
|
val declarationName = declaration.getJsNameOrKotlinName().asString()
|
||||||
|
|
||||||
val needsStableName = declaration.origin == JsLoweredDeclarationOrigin.BRIDGE_TO_EXTERNAL_FUNCTION ||
|
if (declaration.hasStableJsName()) {
|
||||||
declaration.hasStableJsName() ||
|
|
||||||
(declaration as? IrSimpleFunction)?.isMethodOfAny() == true // Handle names for special functions
|
|
||||||
|
|
||||||
if (needsStableName) {
|
|
||||||
return StableNameSignature(declarationName)
|
return StableNameSignature(declarationName)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -5,6 +5,7 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.ir.backend.js.utils
|
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.IrElement
|
||||||
import org.jetbrains.kotlin.ir.UNDEFINED_OFFSET
|
import org.jetbrains.kotlin.ir.UNDEFINED_OFFSET
|
||||||
import org.jetbrains.kotlin.ir.backend.js.JsIrBackendContext
|
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 TODO(element: IrElement): Nothing = TODO(element::class.java.simpleName + " is not supported yet here")
|
||||||
|
|
||||||
fun IrFunction.hasStableJsName(): Boolean {
|
fun IrFunction.hasStableJsName(): Boolean {
|
||||||
|
if (
|
||||||
|
origin == JsLoweredDeclarationOrigin.BRIDGE_WITH_STABLE_NAME ||
|
||||||
|
(this as? IrSimpleFunction)?.isMethodOfAny() == true // Handle names for special functions
|
||||||
|
) {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
if (
|
if (
|
||||||
origin == JsLoweredDeclarationOrigin.JS_SHADOWED_EXPORT ||
|
origin == JsLoweredDeclarationOrigin.JS_SHADOWED_EXPORT ||
|
||||||
origin == IrDeclarationOrigin.FUNCTION_FOR_DEFAULT_PARAMETER ||
|
origin == IrDeclarationOrigin.FUNCTION_FOR_DEFAULT_PARAMETER ||
|
||||||
origin == IrDeclarationOrigin.BRIDGE
|
origin == JsLoweredDeclarationOrigin.BRIDGE_WITHOUT_STABLE_NAME
|
||||||
) {
|
) {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user