[Commonizer] Don't keep fqName inside of CirPackageNode
This commit is contained in:
+2
-7
@@ -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> {
|
|||||||
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,
|
|||||||
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
|
||||||
|
|||||||
+6
-3
@@ -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)
|
||||||
|
|
||||||
|
|||||||
+2
-2
@@ -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(
|
|||||||
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)
|
||||||
|
|||||||
+2
-6
@@ -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(
|
|||||||
|
|
||||||
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(
|
||||||
|
|||||||
Reference in New Issue
Block a user