[JS IR] Change global map in context to mapping
^KT-46204 fixed
This commit is contained in:
@@ -65,8 +65,6 @@ class JsIrBackendContext(
|
|||||||
val fileToInitializationFuns: MutableMap<IrFile, IrSimpleFunction?> = mutableMapOf()
|
val fileToInitializationFuns: MutableMap<IrFile, IrSimpleFunction?> = mutableMapOf()
|
||||||
val fileToInitializerPureness: MutableMap<IrFile, Boolean> = mutableMapOf()
|
val fileToInitializerPureness: MutableMap<IrFile, Boolean> = mutableMapOf()
|
||||||
|
|
||||||
val suspendArityStore: MutableMap<IrDeclaration, Set<Int>> = mutableMapOf()
|
|
||||||
|
|
||||||
val extractedLocalClasses: MutableSet<IrClass> = hashSetOf()
|
val extractedLocalClasses: MutableSet<IrClass> = hashSetOf()
|
||||||
|
|
||||||
override val builtIns = module.builtIns
|
override val builtIns = module.builtIns
|
||||||
|
|||||||
+5
-4
@@ -10,18 +10,19 @@ 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.declarations.IrDeclaration
|
import org.jetbrains.kotlin.ir.declarations.IrDeclaration
|
||||||
import org.jetbrains.kotlin.ir.declarations.IrSimpleFunction
|
import org.jetbrains.kotlin.ir.declarations.IrSimpleFunction
|
||||||
import kotlin.collections.set
|
|
||||||
|
|
||||||
class JsSuspendArityStoreLowering(private val context: JsIrBackendContext) : DeclarationTransformer {
|
class JsSuspendArityStoreLowering(context: JsIrBackendContext) : DeclarationTransformer {
|
||||||
|
|
||||||
|
private var IrClass.suspendArityStore by context.mapping.suspendArityStore
|
||||||
|
|
||||||
override fun transformFlat(declaration: IrDeclaration): List<IrDeclaration>? {
|
override fun transformFlat(declaration: IrDeclaration): List<IrDeclaration>? {
|
||||||
if (declaration !is IrClass) return null
|
if (declaration !is IrClass) return null
|
||||||
|
|
||||||
declaration.declarations
|
declaration.declarations
|
||||||
.filterIsInstance<IrSimpleFunction>()
|
.filterIsInstance<IrSimpleFunction>()
|
||||||
.filter { it.isSuspend }
|
.filter { it.isSuspend }
|
||||||
.map { it.valueParameters.size }
|
|
||||||
.let {
|
.let {
|
||||||
context.suspendArityStore[declaration] = it.toSet()
|
declaration.suspendArityStore = it
|
||||||
}
|
}
|
||||||
|
|
||||||
return null
|
return null
|
||||||
|
|||||||
+4
-3
@@ -234,9 +234,10 @@ class JsClassGenerator(private val irClass: IrClass, val context: JsGenerationCo
|
|||||||
|
|
||||||
private fun isCoroutineClass(): Boolean = irClass.superTypes.any { it.isSuspendFunctionTypeOrSubtype() }
|
private fun isCoroutineClass(): Boolean = irClass.superTypes.any { it.isSuspendFunctionTypeOrSubtype() }
|
||||||
|
|
||||||
private fun generateSuspendArity(): JsPropertyInitializer? {
|
private fun generateSuspendArity(): JsPropertyInitializer {
|
||||||
val arity = context.staticContext.backendContext.suspendArityStore
|
val arity = context.staticContext.backendContext.mapping.suspendArityStore[irClass]!!
|
||||||
.getValue(irClass)
|
.map { it.valueParameters.size }
|
||||||
|
.distinct()
|
||||||
.map { JsIntLiteral(it) }
|
.map { JsIntLiteral(it) }
|
||||||
|
|
||||||
return JsPropertyInitializer(JsNameRef(Namer.METADATA_SUSPEND_ARITY), JsArrayLiteral(arity))
|
return JsPropertyInitializer(JsNameRef(Namer.METADATA_SUSPEND_ARITY), JsArrayLiteral(arity))
|
||||||
|
|||||||
@@ -35,6 +35,8 @@ class JsMapping(val state: JsMappingState) : DefaultMapping(state) {
|
|||||||
val enumConstructorOldToNewValueParameters = state.newDeclarationToDeclarationMapping<IrValueDeclaration, IrValueParameter>()
|
val enumConstructorOldToNewValueParameters = state.newDeclarationToDeclarationMapping<IrValueDeclaration, IrValueParameter>()
|
||||||
val enumEntryToCorrespondingField = state.newDeclarationToDeclarationMapping<IrEnumEntry, IrField>()
|
val enumEntryToCorrespondingField = state.newDeclarationToDeclarationMapping<IrEnumEntry, IrField>()
|
||||||
val enumClassToInitEntryInstancesFun = state.newDeclarationToDeclarationMapping<IrClass, IrSimpleFunction>()
|
val enumClassToInitEntryInstancesFun = state.newDeclarationToDeclarationMapping<IrClass, IrSimpleFunction>()
|
||||||
|
|
||||||
|
val suspendArityStore = state.newDeclarationToDeclarationCollectionMapping<IrClass, Collection<IrSimpleFunction>>()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user