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 baa2b615492..eb2623d0103 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 @@ -61,8 +61,7 @@ private val DEFAULT_IMPORTS_FOR_JVM: List = ArrayList(). } val builtIns = JvmPlatform.builtIns - addAllClassifiersFromScope(builtIns.builtInsPackageScope) - addAllClassifiersFromScope(builtIns.collectionsPackageFragment.getMemberScope()) - addAllClassifiersFromScope(builtIns.rangesPackageFragment.getMemberScope()) - addAllClassifiersFromScope(builtIns.annotationPackageFragment.getMemberScope()) + for (builtinPackageFragment in builtIns.builtinsPackageFragments) { + addAllClassifiersFromScope(builtinPackageFragment.getMemberScope()) + } } diff --git a/core/descriptors/src/org/jetbrains/kotlin/builtins/KotlinBuiltIns.java b/core/descriptors/src/org/jetbrains/kotlin/builtins/KotlinBuiltIns.java index 84d80ff9d62..7188ad3208e 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/builtins/KotlinBuiltIns.java +++ b/core/descriptors/src/org/jetbrains/kotlin/builtins/KotlinBuiltIns.java @@ -67,6 +67,8 @@ public abstract class KotlinBuiltIns { private final BuiltinsPackageFragment rangesPackageFragment; private final BuiltinsPackageFragment annotationPackageFragment; + private final Set builtinsPackageFragments; + private final Map primitiveTypeToArrayKotlinType; private final Map primitiveKotlinTypeToKotlinArrayType; private final Map kotlinArrayTypeToPrimitiveKotlinType; @@ -95,13 +97,15 @@ public abstract class KotlinBuiltIns { builtInsModule.initialize(packageFragmentProvider); builtInsModule.setDependencies(builtInsModule); - packageNameToPackageFragment = new HashMap(); + packageNameToPackageFragment = new LinkedHashMap(); builtinsPackageFragment = getBuiltinsPackageFragment(packageFragmentProvider, packageNameToPackageFragment, BUILT_INS_PACKAGE_FQ_NAME); collectionsPackageFragment = getBuiltinsPackageFragment(packageFragmentProvider, packageNameToPackageFragment, COLLECTIONS_PACKAGE_FQ_NAME); rangesPackageFragment = getBuiltinsPackageFragment(packageFragmentProvider, packageNameToPackageFragment, RANGES_PACKAGE_FQ_NAME); annotationPackageFragment = getBuiltinsPackageFragment(packageFragmentProvider, packageNameToPackageFragment, ANNOTATION_PACKAGE_FQ_NAME); + builtinsPackageFragments = new LinkedHashSet(packageNameToPackageFragment.values()); + primitiveTypeToArrayKotlinType = new EnumMap(PrimitiveType.class); primitiveKotlinTypeToKotlinArrayType = new HashMap(); kotlinArrayTypeToPrimitiveKotlinType = new HashMap(); @@ -246,6 +250,11 @@ public abstract class KotlinBuiltIns { return builtInsModule; } + @NotNull + public Set getBuiltinsPackageFragments() { + return builtinsPackageFragments; + } + @NotNull public PackageFragmentDescriptor getBuiltInsPackageFragment() { return builtinsPackageFragment; 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 74794ec005c..e83f58ed20a 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 @@ -44,9 +44,11 @@ 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 - collectClassesFromScope(resolutionFacade.moduleDescriptor.builtIns.builtInsPackageScope) { - if (it.containingDeclaration is ClassDescriptor) { - classDescriptorCollector(it) + for (builtinPackage in resolutionFacade.moduleDescriptor.builtIns.builtinsPackageFragments) { + collectClassesFromScope(builtinPackage.getMemberScope()) { + if (it.containingDeclaration is ClassDescriptor) { + classDescriptorCollector(it) + } } }