Collect nested classes from all 4 builtin packages.

This commit is contained in:
Ilya Gorbunov
2015-12-23 23:58:53 +03:00
parent e500e4bdf4
commit 1129cee0ff
3 changed files with 18 additions and 8 deletions
@@ -61,8 +61,7 @@ private val DEFAULT_IMPORTS_FOR_JVM: List<ImportPath> = ArrayList<ImportPath>().
}
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())
}
}
@@ -67,6 +67,8 @@ public abstract class KotlinBuiltIns {
private final BuiltinsPackageFragment rangesPackageFragment;
private final BuiltinsPackageFragment annotationPackageFragment;
private final Set<BuiltinsPackageFragment> builtinsPackageFragments;
private final Map<PrimitiveType, KotlinType> primitiveTypeToArrayKotlinType;
private final Map<KotlinType, KotlinType> primitiveKotlinTypeToKotlinArrayType;
private final Map<KotlinType, KotlinType> kotlinArrayTypeToPrimitiveKotlinType;
@@ -95,13 +97,15 @@ public abstract class KotlinBuiltIns {
builtInsModule.initialize(packageFragmentProvider);
builtInsModule.setDependencies(builtInsModule);
packageNameToPackageFragment = new HashMap<FqName, BuiltinsPackageFragment>();
packageNameToPackageFragment = new LinkedHashMap<FqName, BuiltinsPackageFragment>();
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<BuiltinsPackageFragment>(packageNameToPackageFragment.values());
primitiveTypeToArrayKotlinType = new EnumMap<PrimitiveType, KotlinType>(PrimitiveType.class);
primitiveKotlinTypeToKotlinArrayType = new HashMap<KotlinType, KotlinType>();
kotlinArrayTypeToPrimitiveKotlinType = new HashMap<KotlinType, KotlinType>();
@@ -246,6 +250,11 @@ public abstract class KotlinBuiltIns {
return builtInsModule;
}
@NotNull
public Set<BuiltinsPackageFragment> getBuiltinsPackageFragments() {
return builtinsPackageFragments;
}
@NotNull
public PackageFragmentDescriptor getBuiltInsPackageFragment() {
return builtinsPackageFragment;
@@ -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)
}
}
}