diff --git a/core/descriptors/src/org/jetbrains/kotlin/name/SpecialNames.java b/core/descriptors/src/org/jetbrains/kotlin/name/SpecialNames.java index b2f826fec40..2511301a5df 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/name/SpecialNames.java +++ b/core/descriptors/src/org/jetbrains/kotlin/name/SpecialNames.java @@ -36,5 +36,9 @@ public class SpecialNames { return name != null && !name.isSpecial() ? name : SAFE_IDENTIFIER_FOR_NO_NAME; } + public static boolean isSafeIdentifier(@NotNull Name name) { + return !name.asString().isEmpty() && !name.isSpecial(); + } + private SpecialNames() {} } 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 55c647defef..55257348f95 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 @@ -16,11 +16,13 @@ package org.jetbrains.kotlin.serialization.deserialization.descriptors +import org.jetbrains.kotlin.descriptors.ClassDescriptor import org.jetbrains.kotlin.descriptors.DeclarationDescriptor import org.jetbrains.kotlin.descriptors.PackageFragmentDescriptor import org.jetbrains.kotlin.descriptors.ReceiverParameterDescriptor import org.jetbrains.kotlin.name.ClassId import org.jetbrains.kotlin.name.Name +import org.jetbrains.kotlin.name.SpecialNames import org.jetbrains.kotlin.resolve.scopes.DescriptorKindFilter import org.jetbrains.kotlin.serialization.ProtoBuf import org.jetbrains.kotlin.serialization.deserialization.DeserializationComponents @@ -43,7 +45,9 @@ public open class DeserializedPackageMemberScope( override fun getDescriptors(kindFilter: DescriptorKindFilter, nameFilter: (Name) -> Boolean) = computeDescriptors(kindFilter, nameFilter) - override fun getClassDescriptor(name: Name) = c.components.deserializeClass(ClassId(packageFqName, name)) + override fun getClassDescriptor(name: Name): ClassDescriptor? = + if (SpecialNames.isSafeIdentifier(name)) c.components.deserializeClass(ClassId(packageFqName, name)) + else null override fun addClassDescriptors(result: MutableCollection, nameFilter: (Name) -> Boolean) { for (className in classNames) {