From 6393667ddade073a3fe8fb1a9d3b415fb4611726 Mon Sep 17 00:00:00 2001 From: Dmitriy Dolovov Date: Thu, 18 Jun 2020 11:10:52 +0700 Subject: [PATCH] [Commonizer] Rework preparation of CIR cache in TypeCommonizerTest --- .../commonizer/core/TypeCommonizerTest.kt | 63 ++++++++----------- 1 file changed, 25 insertions(+), 38 deletions(-) diff --git a/native/commonizer/tests/org/jetbrains/kotlin/descriptors/commonizer/core/TypeCommonizerTest.kt b/native/commonizer/tests/org/jetbrains/kotlin/descriptors/commonizer/core/TypeCommonizerTest.kt index 2c2de32fd45..b6fb42b7abe 100644 --- a/native/commonizer/tests/org/jetbrains/kotlin/descriptors/commonizer/core/TypeCommonizerTest.kt +++ b/native/commonizer/tests/org/jetbrains/kotlin/descriptors/commonizer/core/TypeCommonizerTest.kt @@ -14,10 +14,8 @@ import org.jetbrains.kotlin.descriptors.commonizer.cir.factory.CirTypeFactory import org.jetbrains.kotlin.descriptors.commonizer.mergedtree.CirRootNode.CirClassifiersCacheImpl import org.jetbrains.kotlin.descriptors.commonizer.mergedtree.buildClassNode import org.jetbrains.kotlin.descriptors.commonizer.mergedtree.buildTypeAliasNode -import org.jetbrains.kotlin.descriptors.commonizer.utils.CommonizedGroupMap import org.jetbrains.kotlin.descriptors.commonizer.utils.mockClassType import org.jetbrains.kotlin.descriptors.commonizer.utils.mockTAType -import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameSafe import org.jetbrains.kotlin.storage.LockBasedStorageManager import org.jetbrains.kotlin.types.KotlinType @@ -456,16 +454,36 @@ class TypeCommonizerTest : AbstractCommonizerTest() { private fun prepareCache(variants: Array) { check(variants.isNotEmpty()) - val classesMap = CommonizedGroupMap(variants.size) - val typeAliasesMap = CommonizedGroupMap(variants.size) - fun recurse(type: KotlinType, index: Int) { @Suppress("MoveVariableDeclarationIntoWhen") val descriptor = (type.getAbbreviation() ?: type).constructor.declarationDescriptor when (descriptor) { - is ClassDescriptor -> classesMap[descriptor.fqNameSafe][index] = descriptor + is ClassDescriptor -> { + val fqName = descriptor.fqNameSafe + val node = cache.classes.getOrPut(fqName) { + buildClassNode( + storageManager = LockBasedStorageManager.NO_LOCKS, + size = variants.size, + cacheRW = cache, + parentCommonDeclaration = null, + fqName = fqName + ) + } + node.targetDeclarations[index] = CirClassFactory.create(descriptor) + } is TypeAliasDescriptor -> { - typeAliasesMap[descriptor.fqNameSafe][index] = descriptor + val fqName = descriptor.fqNameSafe + val node = cache.typeAliases.getOrPut(fqName) { + buildTypeAliasNode( + storageManager = LockBasedStorageManager.NO_LOCKS, + size = variants.size, + cacheRW = cache, + fqName = fqName + + ) + } + node.targetDeclarations[index] = CirTypeAliasFactory.create(descriptor) + recurse(descriptor.underlyingType, index) // expand underlying types recursively } else -> error("Unexpected descriptor of KotlinType: $descriptor, $type") @@ -475,37 +493,6 @@ class TypeCommonizerTest : AbstractCommonizerTest() { variants.forEachIndexed { index, type -> recurse(type, index) } - - for ((fqName, classesGroup) in classesMap) { - buildClassNode( - LockBasedStorageManager.NO_LOCKS, - classesGroup.size, - cache, - null, - fqName - ).also { - classesGroup.forEachIndexed { index, clazz -> - if (clazz != null) { - it.targetDeclarations[index] = CirClassFactory.create(clazz) - } - } - } - } - - for ((fqName, typeAliasesGroup) in typeAliasesMap) { - buildTypeAliasNode( - LockBasedStorageManager.NO_LOCKS, - typeAliasesGroup.size, - cache, - fqName - ).also { - typeAliasesGroup.forEachIndexed { index, typeAlias -> - if (typeAlias != null) { - it.targetDeclarations[index] = CirTypeAliasFactory.create(typeAlias) - } - } - } - } } fun doTestSuccess(expected: KotlinType, vararg variants: KotlinType) {