[JS IC] Drop special IdSignatureSerializer for IC
This commit is contained in:
committed by
teamcityserver
parent
4a601ebf95
commit
b1251c1716
+5
-4
@@ -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>()
|
||||
|
||||
|
||||
+13
-19
@@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user