[Commonizer] Do not re-calculate classifier indices for transformer
^KT-47430
This commit is contained in:
committed by
Space
parent
dda9bb93f6
commit
367db345a8
@@ -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)
|
||||
|
||||
|
||||
+6
-7
@@ -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) }
|
||||
|
||||
Reference in New Issue
Block a user