diff --git a/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/platform/JvmPlatform.kt b/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/platform/JvmPlatform.kt index c9c3d60e16b..a4064350e4a 100644 --- a/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/platform/JvmPlatform.kt +++ b/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/platform/JvmPlatform.kt @@ -32,8 +32,8 @@ object JvmPlatform : TargetPlatform("JVM") { } } - for (builtinPackageFragment in JvmBuiltIns(storageManager).builtInsPackageFragmentsImportedByDefault) { - addAllClassifiersFromScope(builtinPackageFragment.getMemberScope()) + for (builtInPackage in JvmBuiltIns(storageManager).builtInPackagesImportedByDefault) { + addAllClassifiersFromScope(builtInPackage.memberScope) } } diff --git a/core/descriptors/src/org/jetbrains/kotlin/builtins/KotlinBuiltIns.java b/core/descriptors/src/org/jetbrains/kotlin/builtins/KotlinBuiltIns.java index c9f9c9ab750..31255cde30a 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/builtins/KotlinBuiltIns.java +++ b/core/descriptors/src/org/jetbrains/kotlin/builtins/KotlinBuiltIns.java @@ -5,7 +5,6 @@ package org.jetbrains.kotlin.builtins; -import kotlin.collections.CollectionsKt; import kotlin.jvm.functions.Function0; import kotlin.jvm.functions.Function1; import org.jetbrains.annotations.NotNull; @@ -17,9 +16,7 @@ import org.jetbrains.kotlin.descriptors.annotations.Annotations; import org.jetbrains.kotlin.descriptors.deserialization.AdditionalClassPartsProvider; import org.jetbrains.kotlin.descriptors.deserialization.ClassDescriptorFactory; import org.jetbrains.kotlin.descriptors.deserialization.PlatformDependentDeclarationFilter; -import org.jetbrains.kotlin.descriptors.impl.EmptyPackageFragmentDescriptor; import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl; -import org.jetbrains.kotlin.descriptors.impl.PackageFragmentDescriptorImpl; import org.jetbrains.kotlin.incremental.components.NoLookupLocation; import org.jetbrains.kotlin.name.ClassId; import org.jetbrains.kotlin.name.FqName; @@ -27,7 +24,6 @@ import org.jetbrains.kotlin.name.FqNameUnsafe; import org.jetbrains.kotlin.name.Name; import org.jetbrains.kotlin.resolve.DescriptorUtils; import org.jetbrains.kotlin.resolve.descriptorUtil.DescriptorUtilsKt; -import org.jetbrains.kotlin.resolve.scopes.ChainedMemberScope; import org.jetbrains.kotlin.resolve.scopes.MemberScope; import org.jetbrains.kotlin.storage.MemoizedFunctionToNotNull; import org.jetbrains.kotlin.storage.NotNullLazyValue; @@ -65,7 +61,7 @@ public abstract class KotlinBuiltIns { private ModuleDescriptorImpl builtInsModule; private final NotNullLazyValue primitives; - private final NotNullLazyValue packageFragments; + private final NotNullLazyValue> builtInPackagesImportedByDefault; private final MemoizedFunctionToNotNull builtInClassesByName; @@ -77,20 +73,15 @@ public abstract class KotlinBuiltIns { protected KotlinBuiltIns(@NotNull StorageManager storageManager) { this.storageManager = storageManager; - this.packageFragments = storageManager.createLazyValue(new Function0() { + this.builtInPackagesImportedByDefault = storageManager.createLazyValue(new Function0>() { @Override - public PackageFragments invoke() { - PackageFragmentProvider provider = builtInsModule.getPackageFragmentProvider(); - - Map nameToFragment = new LinkedHashMap(); - createPackage(provider, nameToFragment, BUILT_INS_PACKAGE_FQ_NAME); - createPackage(provider, null, COROUTINES_PACKAGE_FQ_NAME_RELEASE); - createPackage(provider, nameToFragment, COLLECTIONS_PACKAGE_FQ_NAME); - createPackage(provider, nameToFragment, RANGES_PACKAGE_FQ_NAME); - createPackage(provider, nameToFragment, ANNOTATION_PACKAGE_FQ_NAME); - Set allImportedByDefault = new LinkedHashSet(nameToFragment.values()); - - return new PackageFragments(allImportedByDefault); + public Collection invoke() { + return Arrays.asList( + builtInsModule.getPackage(BUILT_INS_PACKAGE_FQ_NAME), + builtInsModule.getPackage(COLLECTIONS_PACKAGE_FQ_NAME), + builtInsModule.getPackage(RANGES_PACKAGE_FQ_NAME), + builtInsModule.getPackage(ANNOTATION_PACKAGE_FQ_NAME) + ); } }); @@ -168,42 +159,6 @@ public abstract class KotlinBuiltIns { return Collections.singletonList(new BuiltInFictitiousFunctionClassFactory(storageManager, builtInsModule)); } - @NotNull - private PackageFragmentDescriptor createPackage( - @NotNull PackageFragmentProvider fragmentProvider, - @Nullable Map packageNameToPackageFragment, - @NotNull final FqName packageFqName - ) { - final List packageFragments = fragmentProvider.getPackageFragments(packageFqName); - - PackageFragmentDescriptor result = - packageFragments.isEmpty() - ? new EmptyPackageFragmentDescriptor(builtInsModule, packageFqName) - : packageFragments.size() == 1 - ? packageFragments.iterator().next() - : new PackageFragmentDescriptorImpl(builtInsModule, packageFqName) { - @NotNull - @Override - public MemberScope getMemberScope() { - return new ChainedMemberScope( - "built-in package " + packageFqName, - CollectionsKt.map( - packageFragments, - new Function1() { - @Override - public MemberScope invoke(PackageFragmentDescriptor descriptor) { - return descriptor.getMemberScope(); - } - } - ) - ); - } - }; - - if (packageNameToPackageFragment != null) packageNameToPackageFragment.put(packageFqName, result); - return result; - } - @NotNull protected StorageManager getStorageManager() { return storageManager; @@ -225,14 +180,6 @@ public abstract class KotlinBuiltIns { } } - private static class PackageFragments { - public final Set allImportedByDefaultBuiltInsPackageFragments; - - private PackageFragments(@NotNull Set allImportedByDefaultBuiltInsPackageFragments) { - this.allImportedByDefaultBuiltInsPackageFragments = allImportedByDefaultBuiltInsPackageFragments; - } - } - public static class FqNames { public final FqNameUnsafe any = fqNameUnsafe("Any"); public final FqNameUnsafe nothing = fqNameUnsafe("Nothing"); @@ -366,8 +313,8 @@ public abstract class KotlinBuiltIns { } @NotNull - public Set getBuiltInsPackageFragmentsImportedByDefault() { - return packageFragments.invoke().allImportedByDefaultBuiltInsPackageFragments; + public Collection getBuiltInPackagesImportedByDefault() { + return builtInPackagesImportedByDefault.invoke(); } /** diff --git a/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/AllClassesCompletion.kt b/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/AllClassesCompletion.kt index fe7d6345796..c53f1d37a37 100644 --- a/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/AllClassesCompletion.kt +++ b/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/AllClassesCompletion.kt @@ -50,8 +50,8 @@ class AllClassesCompletion(private val parameters: CompletionParameters, //TODO: this is a temporary solution until we have built-ins in indices // we need only nested classes because top-level built-ins are all added through default imports - for (builtinPackage in resolutionFacade.moduleDescriptor.builtIns.builtInsPackageFragmentsImportedByDefault) { - collectClassesFromScope(builtinPackage.getMemberScope()) { + for (builtInPackage in resolutionFacade.moduleDescriptor.builtIns.builtInPackagesImportedByDefault) { + collectClassesFromScope(builtInPackage.memberScope) { if (it.containingDeclaration is ClassDescriptor) { classifierDescriptorCollector(it) }