[JS IR] Fix case with bridge with nested classes

^KT-54686 fixed
This commit is contained in:
Ilya Goncharov
2022-10-26 12:56:03 +00:00
committed by Space Team
parent 2e48557a0d
commit fd5fba6f09
12 changed files with 75 additions and 9 deletions
@@ -415,10 +415,4 @@ class JsIrBackendContext(
outlinedJsCodeFunctions[symbol] = parsedJsFunction
return parsedJsFunction
}
private var irFunctionSignatureCache = hashMapOf<IrFunction, String>()
fun getFunctionSignatureFromCache(f: IrFunction): String {
return irFunctionSignatureCache.getOrPut(f) { calculateJsFunctionSignature(f, this) }
}
}
@@ -34,7 +34,10 @@ class JsBridgesConstruction(context: JsIrBackendContext) : BridgesConstruction<J
private val primitiveToLiteralConstructor = context.intrinsics.primitiveToLiteralConstructor
override fun getFunctionSignature(function: IrSimpleFunction) =
jsFunctionSignature(function, context)
jsFunctionSignature(
function,
context
)
override fun getBridgeOrigin(bridge: IrSimpleFunction): IrDeclarationOrigin =
when {
@@ -158,7 +158,10 @@ fun calculateJsFunctionSignature(declaration: IrFunction, context: JsIrBackendCo
) + "_" + abs(signature.hashCode()).toString(Character.MAX_RADIX) + RESERVED_MEMBER_NAME_SUFFIX
}
fun jsFunctionSignature(declaration: IrFunction, context: JsIrBackendContext): String {
fun jsFunctionSignature(
declaration: IrFunction,
context: JsIrBackendContext
): String {
require(!declaration.isStaticMethodOfClass)
require(declaration.dispatchReceiverParameter != null)
@@ -172,7 +175,7 @@ fun jsFunctionSignature(declaration: IrFunction, context: JsIrBackendContext): S
}
val declarationSignature = (declaration as? IrSimpleFunction)?.resolveFakeOverride() ?: declaration
return context.getFunctionSignatureFromCache(declarationSignature)
return calculateJsFunctionSignature(declarationSignature, context)
}
class NameTables(