diff --git a/core/deserialization/src/org/jetbrains/kotlin/serialization/deserialization/descriptors/DeserializedClassDescriptor.kt b/core/deserialization/src/org/jetbrains/kotlin/serialization/deserialization/descriptors/DeserializedClassDescriptor.kt index db02e1a10a9..7c6cca7be08 100644 --- a/core/deserialization/src/org/jetbrains/kotlin/serialization/deserialization/descriptors/DeserializedClassDescriptor.kt +++ b/core/deserialization/src/org/jetbrains/kotlin/serialization/deserialization/descriptors/DeserializedClassDescriptor.kt @@ -263,12 +263,6 @@ class DeserializedClassDescriptor( } } - override fun getNonDeclaredTypeAliasNames(): Set { - return classDescriptor.typeConstructor.supertypes.flatMapTo(LinkedHashSet()) { - it.memberScope.getContributedDescriptors().filterIsInstance().map { it.name } - } - } - override fun getContributedClassifier(name: Name, location: LookupLocation): ClassifierDescriptor? { recordLookup(name, location) return classDescriptor.enumEntries?.findEnumEntry(name) ?: diff --git a/core/deserialization/src/org/jetbrains/kotlin/serialization/deserialization/descriptors/DeserializedMemberScope.kt b/core/deserialization/src/org/jetbrains/kotlin/serialization/deserialization/descriptors/DeserializedMemberScope.kt index fda98470676..aac9f11973d 100644 --- a/core/deserialization/src/org/jetbrains/kotlin/serialization/deserialization/descriptors/DeserializedMemberScope.kt +++ b/core/deserialization/src/org/jetbrains/kotlin/serialization/deserialization/descriptors/DeserializedMemberScope.kt @@ -52,17 +52,13 @@ abstract class DeserializedMemberScope protected constructor( c.storageManager.createLazyValue { typeAliasList.groupByName { it.name } } - protected val typeAliasNames by - c.storageManager.createLazyValue { - typeAliasList.map { c.nameResolver.getName(it.name) } - } private val functions = c.storageManager.createMemoizedFunction> { computeFunctions(it) } private val properties = c.storageManager.createMemoizedFunction> { computeProperties(it) } - private val typeAliases = - c.storageManager.createMemoizedFunction> { computeTypeAliases(it) } + private val typeAliasByName = + c.storageManager.createMemoizedFunctionWithNullableValues { createTypeAlias(it) } private val functionNamesLazy by c.storageManager.createLazyValue { functionProtos.keys + getNonDeclaredFunctionNames() @@ -72,6 +68,8 @@ abstract class DeserializedMemberScope protected constructor( propertyProtos.keys + getNonDeclaredVariableNames() } + protected val typeAliasNames: Set get() = typeAliasProtos.keys + override fun getFunctionNames() = functionNamesLazy override fun getVariableNames() = variableNamesLazy @@ -120,21 +118,19 @@ abstract class DeserializedMemberScope protected constructor( protected open fun computeNonDeclaredProperties(name: Name, descriptors: MutableCollection) { } - private fun computeTypeAliases(name: Name) = - computeDescriptors( - name, - typeAliasProtos, - { c.memberDeserializer.loadTypeAlias(it) }, - { }) + private fun createTypeAlias(name: Name) = + typeAliasProtos[name]?.singleOrNull()?.let { + c.memberDeserializer.loadTypeAlias(it) + } override fun getContributedVariables(name: Name, location: LookupLocation): Collection { if (name !in getVariableNames()) return emptyList() return properties(name) } - protected fun getContributedTypeAliases(name: Name): Collection { - if (name !in typeAliasNames) return emptyList() - return typeAliases(name) + protected fun getTypeAlias(name: Name): TypeAliasDescriptor? { + if (name !in typeAliasNames) return null + return typeAliasByName(name) } protected abstract fun addClassifierDescriptors(result: MutableCollection, nameFilter: (Name) -> Boolean) @@ -203,7 +199,6 @@ abstract class DeserializedMemberScope protected constructor( protected abstract fun getNonDeclaredFunctionNames(): Set protected abstract fun getNonDeclaredVariableNames(): Set - protected abstract fun getNonDeclaredTypeAliasNames(): Set protected abstract fun addEnumEntryDescriptors(result: MutableCollection, nameFilter: (Name) -> Boolean) diff --git a/core/deserialization/src/org/jetbrains/kotlin/serialization/deserialization/descriptors/DeserializedPackageMemberScope.kt b/core/deserialization/src/org/jetbrains/kotlin/serialization/deserialization/descriptors/DeserializedPackageMemberScope.kt index c06ab7e2452..8557f9c7856 100644 --- a/core/deserialization/src/org/jetbrains/kotlin/serialization/deserialization/descriptors/DeserializedPackageMemberScope.kt +++ b/core/deserialization/src/org/jetbrains/kotlin/serialization/deserialization/descriptors/DeserializedPackageMemberScope.kt @@ -53,7 +53,7 @@ open class DeserializedPackageMemberScope( (name in classNames || c.components.fictitiousClassDescriptorFactory.shouldCreateClass(packageFqName, name))) { return getClassDescriptor(name) } - return getContributedTypeAliases(name).singleOrNull() + return getTypeAlias(name) } private fun getClassDescriptor(name: Name): ClassDescriptor? = @@ -67,14 +67,13 @@ open class DeserializedPackageMemberScope( } for (typeAliasName in typeAliasNames) { if (nameFilter(typeAliasName)) { - result.addAll(getContributedTypeAliases(typeAliasName)) + result.addIfNotNull(getTypeAlias(typeAliasName)) } } } override fun getNonDeclaredFunctionNames(): Set = emptySet() override fun getNonDeclaredVariableNames(): Set = emptySet() - override fun getNonDeclaredTypeAliasNames(): Set = emptySet() override fun addEnumEntryDescriptors(result: MutableCollection, nameFilter: (Name) -> Boolean) { // Do nothing