[JS IC] Drop special IdSignatureSerializer for IC

This commit is contained in:
Roman Artemev
2021-07-28 15:38:06 +03:00
committed by teamcityserver
parent 4a601ebf95
commit b1251c1716
5 changed files with 24 additions and 51 deletions
@@ -39,8 +39,8 @@ class FakeOverrideGlobalDeclarationTable(
open class FakeOverrideDeclarationTable(
mangler: KotlinMangler.IrMangler,
signatureSerializerFactory: (PublicIdSignatureComputer, DeclarationTable) -> IdSignatureSerializer,
globalTable: FakeOverrideGlobalDeclarationTable = FakeOverrideGlobalDeclarationTable(mangler)
globalTable: FakeOverrideGlobalDeclarationTable = FakeOverrideGlobalDeclarationTable(mangler),
signatureSerializerFactory: (PublicIdSignatureComputer, DeclarationTable) -> IdSignatureSerializer
) : DeclarationTable(globalTable) {
override val globalDeclarationTable: FakeOverrideGlobalDeclarationTable = globalTable
override val signaturer: IdSignatureSerializer = signatureSerializerFactory(globalTable.publicIdSignatureComputer, this)
@@ -69,8 +69,9 @@ class FakeOverrideBuilder(
mangler: KotlinMangler.IrMangler,
typeSystem: IrTypeSystemContext,
val platformSpecificClassFilter: FakeOverrideClassFilter = DefaultFakeOverrideClassFilter,
val signatureSerializerFactory: (PublicIdSignatureComputer, DeclarationTable) -> IdSignatureSerializer = ::IdSignatureSerializer,
private val fakeOverrideDeclarationTable: DeclarationTable = FakeOverrideDeclarationTable(mangler, signatureSerializerFactory),
private val fakeOverrideDeclarationTable: DeclarationTable = FakeOverrideDeclarationTable(mangler) { builder, table ->
IdSignatureSerializer(builder, table)
}
) : FakeOverrideBuilderStrategy() {
private val haveFakeOverrides = mutableSetOf<IrClass>()
@@ -200,11 +200,14 @@ class PublicIdSignatureComputer(val mangler: KotlinMangler.IrMangler) : IdSignat
}
}
open class IdSignatureSerializer(
class IdSignatureSerializer(
private val publicSignatureBuilder: PublicIdSignatureComputer,
private val table: DeclarationTable,
startIndex: Int
) : IdSignatureComputer {
constructor(publicSignatureBuilder: PublicIdSignatureComputer, table: DeclarationTable) : this(publicSignatureBuilder, table, 0)
private val mangler: KotlinMangler.IrMangler = publicSignatureBuilder.mangler
override fun computeSignature(declaration: IrDeclaration): IdSignature {
@@ -217,8 +220,8 @@ open class IdSignatureSerializer(
} else composeFileLocalIdSignature(declaration, compatibleMode)
}
protected var localIndex: Long = 0
protected var scopeIndex: Int = 0
private var localIndex: Long = startIndex.toLong()
private var scopeIndex: Int = startIndex
override fun inFile(file: IrFileSymbol?, block: () -> Unit) {
publicSignatureBuilder.inFile(file, block)
@@ -236,19 +239,19 @@ open class IdSignatureSerializer(
return table.privateDeclarationSignature(declaration, compatibleMode) {
when (declaration) {
is IrValueDeclaration -> declaration.createScopeLocalSignature(scopeIndex++, declaration.name.asString())
is IrAnonymousInitializer -> declaration.createScopeLocalSignature(scopeIndex++, "ANON INIT")
is IrLocalDelegatedProperty -> declaration.createScopeLocalSignature(scopeIndex++, declaration.name.asString())
is IrValueDeclaration -> IdSignature.ScopeLocalDeclaration(scopeIndex++, declaration.name.asString())
is IrAnonymousInitializer -> IdSignature.ScopeLocalDeclaration(scopeIndex++, "ANON INIT")
is IrLocalDelegatedProperty -> IdSignature.ScopeLocalDeclaration(scopeIndex++, declaration.name.asString())
is IrField -> {
val p = declaration.correspondingPropertySymbol?.let { composeSignatureForDeclaration(it.owner, true) }
?: composeContainerIdSignature(declaration.parent, compatibleMode)
declaration.createFileLocalSignature(p, ++localIndex)
IdSignature.FileLocalSignature(p, ++localIndex)
}
is IrSimpleFunction -> {
val parent = declaration.parent
val p = declaration.correspondingPropertySymbol?.let { composeSignatureForDeclaration(it.owner, true) }
?: composeContainerIdSignature(parent, compatibleMode)
declaration.createFileLocalSignature(
IdSignature.FileLocalSignature(
p,
if (declaration.isOverridableFunction()) {
mangler.run { declaration.signatureMangle() }
@@ -260,9 +263,8 @@ open class IdSignatureSerializer(
}
is IrProperty -> {
val parent = declaration.parent
declaration.createFileLocalSignature(
IdSignature.FileLocalSignature(
composeContainerIdSignature(parent, compatibleMode),
if (declaration.isOverridableProperty()) {
mangler.run { declaration.signatureMangle() }
} else {
@@ -272,7 +274,7 @@ open class IdSignatureSerializer(
)
}
else -> {
declaration.createFileLocalSignature(
IdSignature.FileLocalSignature(
composeContainerIdSignature(declaration.parent, compatibleMode),
++localIndex,
declaration.render()
@@ -281,12 +283,4 @@ open class IdSignatureSerializer(
}
}
}
protected open fun IrDeclaration.createFileLocalSignature(parentSignature: IdSignature, localIndex: Long, description: String? = null): IdSignature {
return IdSignature.FileLocalSignature(parentSignature, localIndex, description)
}
protected open fun IrDeclaration.createScopeLocalSignature(scopeIndex: Int, description: String): IdSignature {
return IdSignature.ScopeLocalDeclaration(scopeIndex, description)
}
}