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