[Commonizer] Don't keep fqName inside of CirPackageNode

This commit is contained in:
Dmitriy Dolovov
2021-02-05 23:19:43 +03:00
parent 5d19ac16d5
commit 054b59198b
4 changed files with 12 additions and 18 deletions
@@ -10,7 +10,6 @@ import org.jetbrains.kotlin.descriptors.commonizer.cir.CirDeclaration
import org.jetbrains.kotlin.descriptors.commonizer.cir.CirLiftedUpDeclaration
import org.jetbrains.kotlin.descriptors.commonizer.utils.CommonizedGroup
import org.jetbrains.kotlin.name.ClassId
import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.storage.NullableLazyValue
@@ -28,8 +27,8 @@ interface CirNode<T : CirDeclaration, R : CirDeclaration> {
get() = targetDeclarations.size + 1
fun toString(node: CirNode<*, *>) = buildString {
if (node is CirNodeWithFqName) {
append("fqName=").append(node.fqName.asString()).append(", ")
if (node is CirPackageNode) {
append("packageFqName=").append(node.packageFqName.asString()).append(", ")
}
if (node is CirNodeWithClassId) {
append("classId=").append(node.classId.asString()).append(", ")
@@ -46,10 +45,6 @@ interface CirNodeWithClassId<T : CirClassifier, R : CirClassifier> : CirNode<T,
val classId: ClassId
}
interface CirNodeWithFqName<T : CirDeclaration, R : CirDeclaration> : CirNode<T, R> {
val fqName: FqName
}
interface CirNodeWithLiftingUp<T : CirDeclaration, R : CirDeclaration> : CirNode<T, R> {
val isLiftedUp: Boolean
get() = (commonDeclaration() as? CirLiftedUpDeclaration)?.isLiftedUp == true
@@ -8,21 +8,24 @@ package org.jetbrains.kotlin.descriptors.commonizer.mergedtree
import gnu.trove.THashMap
import org.jetbrains.kotlin.descriptors.commonizer.cir.CirPackage
import org.jetbrains.kotlin.descriptors.commonizer.utils.CommonizedGroup
import org.jetbrains.kotlin.descriptors.commonizer.utils.firstNonNull
import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.storage.NullableLazyValue
class CirPackageNode(
override val targetDeclarations: CommonizedGroup<CirPackage>,
override val commonDeclaration: NullableLazyValue<CirPackage>,
override val fqName: FqName
) : CirNodeWithFqName<CirPackage, CirPackage>, CirNodeWithMembers<CirPackage, CirPackage> {
override val commonDeclaration: NullableLazyValue<CirPackage>
) : CirNodeWithMembers<CirPackage, CirPackage> {
override val properties: MutableMap<PropertyApproximationKey, CirPropertyNode> = THashMap()
override val functions: MutableMap<FunctionApproximationKey, CirFunctionNode> = THashMap()
override val classes: MutableMap<Name, CirClassNode> = THashMap()
val typeAliases: MutableMap<Name, CirTypeAliasNode> = THashMap()
val packageFqName: FqName
get() = targetDeclarations.firstNonNull().fqName
override fun <T, R> accept(visitor: CirNodeVisitor<T, R>, data: T) =
visitor.visitPackageNode(this, data)
@@ -141,7 +141,7 @@ class CirTreeMerger(
packageMemberScope: MemberScope
) {
val packageNode: CirPackageNode = moduleNode.packages.getOrPut(packageFqName) {
buildPackageNode(storageManager, size, packageFqName)
buildPackageNode(storageManager, size)
}
packageNode.targetDeclarations[targetIndex] = CirPackageFactory.create(packageFqName)
@@ -237,7 +237,7 @@ class CirTreeMerger(
typeAliasDescriptor: TypeAliasDescriptor
) {
val typeAliasName = typeAliasDescriptor.name.intern()
val typeAliasClassId = internedClassId(packageNode.fqName, typeAliasName)
val typeAliasClassId = internedClassId(packageNode.packageFqName, typeAliasName)
val typeAliasNode: CirTypeAliasNode = packageNode.typeAliases.getOrPut(typeAliasName) {
buildTypeAliasNode(storageManager, size, classifiers, typeAliasClassId)
@@ -11,7 +11,6 @@ import org.jetbrains.kotlin.descriptors.commonizer.cir.impl.CirClassifierRecursi
import org.jetbrains.kotlin.descriptors.commonizer.core.*
import org.jetbrains.kotlin.descriptors.commonizer.utils.CommonizedGroup
import org.jetbrains.kotlin.name.ClassId
import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.storage.NullableLazyValue
import org.jetbrains.kotlin.storage.StorageManager
@@ -37,15 +36,12 @@ internal fun buildModuleNode(
internal fun buildPackageNode(
storageManager: StorageManager,
size: Int,
fqName: FqName
size: Int
): CirPackageNode = buildNode(
storageManager = storageManager,
size = size,
commonizerProducer = ::PackageCommonizer,
nodeProducer = { targetDeclarations, commonDeclaration ->
CirPackageNode(targetDeclarations, commonDeclaration, fqName)
}
nodeProducer = ::CirPackageNode
)
internal fun buildPropertyNode(