提交 054b5919 编写于 作者: D Dmitriy Dolovov

[Commonizer] Don't keep fqName inside of CirPackageNode

上级 5d19ac16
...@@ -10,7 +10,6 @@ import org.jetbrains.kotlin.descriptors.commonizer.cir.CirDeclaration ...@@ -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.cir.CirLiftedUpDeclaration
import org.jetbrains.kotlin.descriptors.commonizer.utils.CommonizedGroup import org.jetbrains.kotlin.descriptors.commonizer.utils.CommonizedGroup
import org.jetbrains.kotlin.name.ClassId import org.jetbrains.kotlin.name.ClassId
import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.storage.NullableLazyValue import org.jetbrains.kotlin.storage.NullableLazyValue
...@@ -28,8 +27,8 @@ interface CirNode<T : CirDeclaration, R : CirDeclaration> { ...@@ -28,8 +27,8 @@ interface CirNode<T : CirDeclaration, R : CirDeclaration> {
get() = targetDeclarations.size + 1 get() = targetDeclarations.size + 1
fun toString(node: CirNode<*, *>) = buildString { fun toString(node: CirNode<*, *>) = buildString {
if (node is CirNodeWithFqName) { if (node is CirPackageNode) {
append("fqName=").append(node.fqName.asString()).append(", ") append("packageFqName=").append(node.packageFqName.asString()).append(", ")
} }
if (node is CirNodeWithClassId) { if (node is CirNodeWithClassId) {
append("classId=").append(node.classId.asString()).append(", ") append("classId=").append(node.classId.asString()).append(", ")
...@@ -46,10 +45,6 @@ interface CirNodeWithClassId<T : CirClassifier, R : CirClassifier> : CirNode<T, ...@@ -46,10 +45,6 @@ interface CirNodeWithClassId<T : CirClassifier, R : CirClassifier> : CirNode<T,
val classId: ClassId val classId: ClassId
} }
interface CirNodeWithFqName<T : CirDeclaration, R : CirDeclaration> : CirNode<T, R> {
val fqName: FqName
}
interface CirNodeWithLiftingUp<T : CirDeclaration, R : CirDeclaration> : CirNode<T, R> { interface CirNodeWithLiftingUp<T : CirDeclaration, R : CirDeclaration> : CirNode<T, R> {
val isLiftedUp: Boolean val isLiftedUp: Boolean
get() = (commonDeclaration() as? CirLiftedUpDeclaration)?.isLiftedUp == true get() = (commonDeclaration() as? CirLiftedUpDeclaration)?.isLiftedUp == true
......
...@@ -8,21 +8,24 @@ package org.jetbrains.kotlin.descriptors.commonizer.mergedtree ...@@ -8,21 +8,24 @@ package org.jetbrains.kotlin.descriptors.commonizer.mergedtree
import gnu.trove.THashMap import gnu.trove.THashMap
import org.jetbrains.kotlin.descriptors.commonizer.cir.CirPackage import org.jetbrains.kotlin.descriptors.commonizer.cir.CirPackage
import org.jetbrains.kotlin.descriptors.commonizer.utils.CommonizedGroup 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.FqName
import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.storage.NullableLazyValue import org.jetbrains.kotlin.storage.NullableLazyValue
class CirPackageNode( class CirPackageNode(
override val targetDeclarations: CommonizedGroup<CirPackage>, override val targetDeclarations: CommonizedGroup<CirPackage>,
override val commonDeclaration: NullableLazyValue<CirPackage>, override val commonDeclaration: NullableLazyValue<CirPackage>
override val fqName: FqName ) : CirNodeWithMembers<CirPackage, CirPackage> {
) : CirNodeWithFqName<CirPackage, CirPackage>, CirNodeWithMembers<CirPackage, CirPackage> {
override val properties: MutableMap<PropertyApproximationKey, CirPropertyNode> = THashMap() override val properties: MutableMap<PropertyApproximationKey, CirPropertyNode> = THashMap()
override val functions: MutableMap<FunctionApproximationKey, CirFunctionNode> = THashMap() override val functions: MutableMap<FunctionApproximationKey, CirFunctionNode> = THashMap()
override val classes: MutableMap<Name, CirClassNode> = THashMap() override val classes: MutableMap<Name, CirClassNode> = THashMap()
val typeAliases: MutableMap<Name, CirTypeAliasNode> = 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) = override fun <T, R> accept(visitor: CirNodeVisitor<T, R>, data: T) =
visitor.visitPackageNode(this, data) visitor.visitPackageNode(this, data)
......
...@@ -141,7 +141,7 @@ class CirTreeMerger( ...@@ -141,7 +141,7 @@ class CirTreeMerger(
packageMemberScope: MemberScope packageMemberScope: MemberScope
) { ) {
val packageNode: CirPackageNode = moduleNode.packages.getOrPut(packageFqName) { val packageNode: CirPackageNode = moduleNode.packages.getOrPut(packageFqName) {
buildPackageNode(storageManager, size, packageFqName) buildPackageNode(storageManager, size)
} }
packageNode.targetDeclarations[targetIndex] = CirPackageFactory.create(packageFqName) packageNode.targetDeclarations[targetIndex] = CirPackageFactory.create(packageFqName)
...@@ -237,7 +237,7 @@ class CirTreeMerger( ...@@ -237,7 +237,7 @@ class CirTreeMerger(
typeAliasDescriptor: TypeAliasDescriptor typeAliasDescriptor: TypeAliasDescriptor
) { ) {
val typeAliasName = typeAliasDescriptor.name.intern() val typeAliasName = typeAliasDescriptor.name.intern()
val typeAliasClassId = internedClassId(packageNode.fqName, typeAliasName) val typeAliasClassId = internedClassId(packageNode.packageFqName, typeAliasName)
val typeAliasNode: CirTypeAliasNode = packageNode.typeAliases.getOrPut(typeAliasName) { val typeAliasNode: CirTypeAliasNode = packageNode.typeAliases.getOrPut(typeAliasName) {
buildTypeAliasNode(storageManager, size, classifiers, typeAliasClassId) buildTypeAliasNode(storageManager, size, classifiers, typeAliasClassId)
......
...@@ -11,7 +11,6 @@ import org.jetbrains.kotlin.descriptors.commonizer.cir.impl.CirClassifierRecursi ...@@ -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.core.*
import org.jetbrains.kotlin.descriptors.commonizer.utils.CommonizedGroup import org.jetbrains.kotlin.descriptors.commonizer.utils.CommonizedGroup
import org.jetbrains.kotlin.name.ClassId import org.jetbrains.kotlin.name.ClassId
import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.storage.NullableLazyValue import org.jetbrains.kotlin.storage.NullableLazyValue
import org.jetbrains.kotlin.storage.StorageManager import org.jetbrains.kotlin.storage.StorageManager
...@@ -37,15 +36,12 @@ internal fun buildModuleNode( ...@@ -37,15 +36,12 @@ internal fun buildModuleNode(
internal fun buildPackageNode( internal fun buildPackageNode(
storageManager: StorageManager, storageManager: StorageManager,
size: Int, size: Int
fqName: FqName
): CirPackageNode = buildNode( ): CirPackageNode = buildNode(
storageManager = storageManager, storageManager = storageManager,
size = size, size = size,
commonizerProducer = ::PackageCommonizer, commonizerProducer = ::PackageCommonizer,
nodeProducer = { targetDeclarations, commonDeclaration -> nodeProducer = ::CirPackageNode
CirPackageNode(targetDeclarations, commonDeclaration, fqName)
}
) )
internal fun buildPropertyNode( internal fun buildPropertyNode(
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册