diff --git a/core/descriptors/src/org/jetbrains/kotlin/builtins/functions/BuiltInFictitiousFunctionClassFactory.kt b/core/descriptors/src/org/jetbrains/kotlin/builtins/functions/BuiltInFictitiousFunctionClassFactory.kt index cb66beb854a..f06b0ee882e 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/builtins/functions/BuiltInFictitiousFunctionClassFactory.kt +++ b/core/descriptors/src/org/jetbrains/kotlin/builtins/functions/BuiltInFictitiousFunctionClassFactory.kt @@ -83,4 +83,10 @@ class BuiltInFictitiousFunctionClassFactory( return FunctionClassDescriptor(storageManager, containingPackageFragment, kind, arity) } + + override fun getAllContributedClassesIfPossible(packageFqName: FqName): Collection { + // We don't want to return 256 classes here since it would cause them to appear in every import list of every file + // and likely slow down compilation very much + return emptySet() + } } diff --git a/core/deserialization/src/org/jetbrains/kotlin/serialization/deserialization/ClassDescriptorFactory.kt b/core/deserialization/src/org/jetbrains/kotlin/serialization/deserialization/ClassDescriptorFactory.kt index 960ea4759a9..f026834d9cf 100644 --- a/core/deserialization/src/org/jetbrains/kotlin/serialization/deserialization/ClassDescriptorFactory.kt +++ b/core/deserialization/src/org/jetbrains/kotlin/serialization/deserialization/ClassDescriptorFactory.kt @@ -25,4 +25,7 @@ interface ClassDescriptorFactory { fun shouldCreateClass(packageFqName: FqName, name: Name): Boolean fun createClass(classId: ClassId): ClassDescriptor? + + // Note: do not rely on this function to return _all_ classes. Some factories can not enumerate all classes that they're able to create + fun getAllContributedClassesIfPossible(packageFqName: FqName): Collection } 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 f39059e6bfd..435b74631d7 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 @@ -42,7 +42,8 @@ open class DeserializedPackageMemberScope( private val packageFqName = packageDescriptor.fqName override fun getContributedDescriptors(kindFilter: DescriptorKindFilter, nameFilter: (Name) -> Boolean) - = computeDescriptors(kindFilter, nameFilter, NoLookupLocation.WHEN_GET_ALL_DESCRIPTORS) + = computeDescriptors(kindFilter, nameFilter, NoLookupLocation.WHEN_GET_ALL_DESCRIPTORS) + + c.components.fictitiousClassDescriptorFactories.flatMap { it.getAllContributedClassesIfPossible(packageFqName) } override fun hasClass(name: Name) = super.hasClass(name) || c.components.fictitiousClassDescriptorFactories.any { it.shouldCreateClass(packageFqName, name) }