[Commonizer] Keep only "common" dependencies in CirKnownClassifiers
This commit is contained in:
@@ -41,12 +41,9 @@ private fun mergeAndCommonize(storageManager: StorageManager, parameters: Common
|
||||
val classifiers = CirKnownClassifiers(
|
||||
commonizedNodes = CirCommonizedClassifierNodes.default(),
|
||||
forwardDeclarations = CirForwardDeclarations.default(),
|
||||
dependencies = mapOf(
|
||||
// for now, supply only common dependency libraries (ex: Kotlin stdlib)
|
||||
parameters.sharedTarget to CirCompositeClassifiers(
|
||||
CirFictitiousFunctionClassifiers,
|
||||
CirLoadedClassifiers.from(parameters.dependencyModulesProvider)
|
||||
)
|
||||
commonDependencies = CirCompositeClassifiers(
|
||||
CirFictitiousFunctionClassifiers,
|
||||
CirLoadedClassifiers.from(parameters.dependencyModulesProvider)
|
||||
)
|
||||
)
|
||||
val mergeResult = CirTreeMerger(storageManager, classifiers, parameters).merge()
|
||||
|
||||
+2
-8
@@ -7,20 +7,14 @@ package org.jetbrains.kotlin.descriptors.commonizer.mergedtree
|
||||
|
||||
import gnu.trove.THashMap
|
||||
import gnu.trove.THashSet
|
||||
import org.jetbrains.kotlin.descriptors.commonizer.CommonizerTarget
|
||||
import org.jetbrains.kotlin.descriptors.commonizer.SharedCommonizerTarget
|
||||
import org.jetbrains.kotlin.descriptors.commonizer.cir.CirEntityId
|
||||
import org.jetbrains.kotlin.descriptors.commonizer.utils.isUnderKotlinNativeSyntheticPackages
|
||||
|
||||
class CirKnownClassifiers(
|
||||
val commonizedNodes: CirCommonizedClassifierNodes,
|
||||
val forwardDeclarations: CirForwardDeclarations,
|
||||
val dependencies: Map<CommonizerTarget, CirProvidedClassifiers>
|
||||
) {
|
||||
// a shortcut for fast access
|
||||
val commonDependencies: CirProvidedClassifiers =
|
||||
dependencies.filterKeys { it is SharedCommonizerTarget }.values.singleOrNull() ?: CirProvidedClassifiers.EMPTY
|
||||
}
|
||||
val commonDependencies: CirProvidedClassifiers
|
||||
)
|
||||
|
||||
/** A set of all CIR nodes built for commonized classes and type aliases. */
|
||||
interface CirCommonizedClassifierNodes {
|
||||
|
||||
+3
-9
@@ -7,8 +7,6 @@ package org.jetbrains.kotlin.descriptors.commonizer.core
|
||||
|
||||
import org.jetbrains.kotlin.descriptors.ClassDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.TypeAliasDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.commonizer.LeafCommonizerTarget
|
||||
import org.jetbrains.kotlin.descriptors.commonizer.SharedCommonizerTarget
|
||||
import org.jetbrains.kotlin.descriptors.commonizer.cir.CirEntityId
|
||||
import org.jetbrains.kotlin.descriptors.commonizer.cir.CirType
|
||||
import org.jetbrains.kotlin.descriptors.commonizer.cir.factory.CirClassFactory
|
||||
@@ -35,11 +33,9 @@ class TypeCommonizerTest : AbstractCommonizerTest<CirType, CirType>() {
|
||||
classifiers = CirKnownClassifiers(
|
||||
commonizedNodes = CirCommonizedClassifierNodes.default(),
|
||||
forwardDeclarations = CirForwardDeclarations.default(),
|
||||
dependencies = mapOf(
|
||||
FAKE_SHARED_TARGET to object : CirProvidedClassifiers {
|
||||
override fun hasClassifier(classifierId: CirEntityId): Boolean = classifierId.packageName.isUnderStandardKotlinPackages
|
||||
}
|
||||
)
|
||||
commonDependencies = object : CirProvidedClassifiers {
|
||||
override fun hasClassifier(classifierId: CirEntityId): Boolean = classifierId.packageName.isUnderStandardKotlinPackages
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
@@ -537,8 +533,6 @@ class TypeCommonizerTest : AbstractCommonizerTest<CirType, CirType>() {
|
||||
fun areEqual(classifiers: CirKnownClassifiers, a: CirType, b: CirType): Boolean =
|
||||
TypeCommonizer(classifiers).run { commonizeWith(a) && commonizeWith(b) }
|
||||
|
||||
private val FAKE_SHARED_TARGET = SharedCommonizerTarget(setOf(LeafCommonizerTarget("a"), LeafCommonizerTarget("b")))
|
||||
|
||||
private fun CirKnownClassifiers.classNode(classId: CirEntityId, computation: () -> CirClassNode) =
|
||||
commonizedNodes.classNode(classId) ?: computation()
|
||||
|
||||
|
||||
@@ -153,7 +153,7 @@ internal val MOCK_CLASSIFIERS = CirKnownClassifiers(
|
||||
override fun isExportedForwardDeclaration(classId: CirEntityId) = false
|
||||
override fun addExportedForwardDeclaration(classId: CirEntityId) = error("This method should not be called")
|
||||
},
|
||||
dependencies = emptyMap()
|
||||
commonDependencies = CirProvidedClassifiers.EMPTY
|
||||
)
|
||||
|
||||
internal class MockModulesProvider private constructor(
|
||||
|
||||
Reference in New Issue
Block a user