[Commonizer] Do not re-calculate classifier indices for transformer

^KT-47430
This commit is contained in:
sebastian.sellmair
2021-08-12 15:33:00 +02:00
committed by Space
parent dda9bb93f6
commit 367db345a8
2 changed files with 8 additions and 9 deletions
@@ -53,7 +53,7 @@ internal fun commonizeTarget(
parameters.logger.progress(output, "Commonized declarations from ${inputs.targets}") {
val classifiers = CirKnownClassifiers(
classifierIndices = availableTrees.toList().map(::CirClassifierIndex), // TODO NOW: Reuse for transformer!!
classifierIndices = availableTrees.toList().map(::CirClassifierIndex),
commonizedNodes = CirCommonizedClassifierNodes.default(),
commonDependencies = parameters.dependencyClassifiers(output)
)
@@ -61,7 +61,7 @@ internal fun commonizeTarget(
val mergedTree = mergeCirTree(parameters.storageManager, classifiers, availableTrees)
InlineTypeAliasCirNodeTransformer(parameters.storageManager, classifiers).invoke(mergedTree)
TypeSubstitutionCirNodeTransformer(parameters.storageManager, classifiers, availableTrees).invoke(mergedTree)
TypeSubstitutionCirNodeTransformer(parameters.storageManager, classifiers).invoke(mergedTree)
mergedTree.accept(CommonizationVisitor(classifiers, mergedTree), Unit)
@@ -10,19 +10,18 @@ import org.jetbrains.kotlin.commonizer.mergedtree.CirNodeRelationship.ParentNode
import org.jetbrains.kotlin.commonizer.tree.CirTreeRoot
import org.jetbrains.kotlin.storage.StorageManager
internal fun TypeSubstitutionCirNodeTransformer(
storageManager: StorageManager, classifiers: CirKnownClassifiers, roots: Iterable<CirTreeRoot>
): TypeSubstitutionCirNodeTransformer {
val typeSubstitutor = CirAliasTypeSubstitutor(classifiers.commonDependencies, roots.map(::CirClassifierIndex))
return TypeSubstitutionCirNodeTransformer(storageManager, classifiers, typeSubstitutor)
}
internal class TypeSubstitutionCirNodeTransformer(
private val storageManager: StorageManager,
private val classifiers: CirKnownClassifiers,
private val typeSubstitutor: CirTypeSubstitutor
) : CirNodeTransformer {
constructor(storageManager: StorageManager, classifiers: CirKnownClassifiers) : this(
storageManager = storageManager,
classifiers = classifiers,
typeSubstitutor = CirAliasTypeSubstitutor(classifiers.commonDependencies, classifiers.classifierIndices)
)
override fun invoke(root: CirRootNode) {
for (index in 0 until root.targetDeclarations.size) {
root.modules.forEach { (_, module) -> this(module, index) }