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 val builtIns = JvmPlatform.builtIns
addAllClassifiersFromScope(builtIns.builtInsPackageScope) for (builtinPackageFragment in builtIns.builtinsPackageFragments) {
addAllClassifiersFromScope(builtIns.collectionsPackageFragment.getMemberScope()) addAllClassifiersFromScope(builtinPackageFragment.getMemberScope())
addAllClassifiersFromScope(builtIns.rangesPackageFragment.getMemberScope()) }
addAllClassifiersFromScope(builtIns.annotationPackageFragment.getMemberScope())
} }
@@ -67,6 +67,8 @@ public abstract class KotlinBuiltIns {
private final BuiltinsPackageFragment rangesPackageFragment; private final BuiltinsPackageFragment rangesPackageFragment;
private final BuiltinsPackageFragment annotationPackageFragment; private final BuiltinsPackageFragment annotationPackageFragment;
private final Set<BuiltinsPackageFragment> builtinsPackageFragments;
private final Map<PrimitiveType, KotlinType> primitiveTypeToArrayKotlinType; private final Map<PrimitiveType, KotlinType> primitiveTypeToArrayKotlinType;
private final Map<KotlinType, KotlinType> primitiveKotlinTypeToKotlinArrayType; private final Map<KotlinType, KotlinType> primitiveKotlinTypeToKotlinArrayType;
private final Map<KotlinType, KotlinType> kotlinArrayTypeToPrimitiveKotlinType; private final Map<KotlinType, KotlinType> kotlinArrayTypeToPrimitiveKotlinType;
@@ -95,13 +97,15 @@ public abstract class KotlinBuiltIns {
builtInsModule.initialize(packageFragmentProvider); builtInsModule.initialize(packageFragmentProvider);
builtInsModule.setDependencies(builtInsModule); builtInsModule.setDependencies(builtInsModule);
packageNameToPackageFragment = new HashMap<FqName, BuiltinsPackageFragment>(); packageNameToPackageFragment = new LinkedHashMap<FqName, BuiltinsPackageFragment>();
builtinsPackageFragment = getBuiltinsPackageFragment(packageFragmentProvider, packageNameToPackageFragment, BUILT_INS_PACKAGE_FQ_NAME); builtinsPackageFragment = getBuiltinsPackageFragment(packageFragmentProvider, packageNameToPackageFragment, BUILT_INS_PACKAGE_FQ_NAME);
collectionsPackageFragment = getBuiltinsPackageFragment(packageFragmentProvider, packageNameToPackageFragment, COLLECTIONS_PACKAGE_FQ_NAME); collectionsPackageFragment = getBuiltinsPackageFragment(packageFragmentProvider, packageNameToPackageFragment, COLLECTIONS_PACKAGE_FQ_NAME);
rangesPackageFragment = getBuiltinsPackageFragment(packageFragmentProvider, packageNameToPackageFragment, RANGES_PACKAGE_FQ_NAME); rangesPackageFragment = getBuiltinsPackageFragment(packageFragmentProvider, packageNameToPackageFragment, RANGES_PACKAGE_FQ_NAME);
annotationPackageFragment = getBuiltinsPackageFragment(packageFragmentProvider, packageNameToPackageFragment, ANNOTATION_PACKAGE_FQ_NAME); annotationPackageFragment = getBuiltinsPackageFragment(packageFragmentProvider, packageNameToPackageFragment, ANNOTATION_PACKAGE_FQ_NAME);
builtinsPackageFragments = new LinkedHashSet<BuiltinsPackageFragment>(packageNameToPackageFragment.values());
primitiveTypeToArrayKotlinType = new EnumMap<PrimitiveType, KotlinType>(PrimitiveType.class); primitiveTypeToArrayKotlinType = new EnumMap<PrimitiveType, KotlinType>(PrimitiveType.class);
primitiveKotlinTypeToKotlinArrayType = new HashMap<KotlinType, KotlinType>(); primitiveKotlinTypeToKotlinArrayType = new HashMap<KotlinType, KotlinType>();
kotlinArrayTypeToPrimitiveKotlinType = new HashMap<KotlinType, KotlinType>(); kotlinArrayTypeToPrimitiveKotlinType = new HashMap<KotlinType, KotlinType>();
@@ -246,6 +250,11 @@ public abstract class KotlinBuiltIns {
return builtInsModule; return builtInsModule;
} }
@NotNull
public Set<BuiltinsPackageFragment> getBuiltinsPackageFragments() {
return builtinsPackageFragments;
}
@NotNull @NotNull
public PackageFragmentDescriptor getBuiltInsPackageFragment() { public PackageFragmentDescriptor getBuiltInsPackageFragment() {
return builtinsPackageFragment; 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 //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 // we need only nested classes because top-level built-ins are all added through default imports
collectClassesFromScope(resolutionFacade.moduleDescriptor.builtIns.builtInsPackageScope) { for (builtinPackage in resolutionFacade.moduleDescriptor.builtIns.builtinsPackageFragments) {
if (it.containingDeclaration is ClassDescriptor) { collectClassesFromScope(builtinPackage.getMemberScope()) {
classDescriptorCollector(it) if (it.containingDeclaration is ClassDescriptor) {
classDescriptorCollector(it)
}
} }
} }