Removed DescriptorFinder.findPackage.

This commit is contained in:
Evgeny Gerashchenko
2013-11-26 22:07:11 +04:00
parent 557aaf363a
commit 1bbe9b0bd4
8 changed files with 59 additions and 81 deletions
@@ -8,6 +8,7 @@ import org.jetbrains.jet.descriptors.serialization.descriptors.DeserializedPacka
import org.jetbrains.jet.lang.descriptors.*;
import org.jetbrains.jet.lang.descriptors.annotations.AnnotationDescriptor;
import org.jetbrains.jet.lang.descriptors.impl.DeclarationDescriptorImpl;
import org.jetbrains.jet.lang.descriptors.impl.MutablePackageFragmentDescriptor;
import org.jetbrains.jet.lang.resolve.name.FqName;
import org.jetbrains.jet.lang.resolve.name.Name;
import org.jetbrains.jet.lang.resolve.scopes.JetScope;
@@ -29,12 +30,15 @@ class BuiltinsPackageFragment extends DeclarationDescriptorImpl implements Packa
private final DeserializedPackageMemberScope members;
private final NameResolver nameResolver;
private final ModuleDescriptor module;
final PackageFragmentProvider packageFragmentProvider;
public BuiltinsPackageFragment(@NotNull StorageManager storageManager, @NotNull ModuleDescriptor module) {
super(Collections.<AnnotationDescriptor>emptyList(), KotlinBuiltIns.BUILT_INS_PACKAGE_NAME);
this.module = module;
nameResolver = NameSerializationUtil.deserializeNameResolver(getStream(BuiltInsSerializationUtil.getNameTableFilePath(this)));
packageFragmentProvider = new BuiltinsPackageFragmentProvider();
members = new DeserializedPackageMemberScope(storageManager, this, UNSUPPORTED, new BuiltInsDescriptorFinder(storageManager),
loadPackage(), nameResolver);
}
@@ -94,11 +98,36 @@ class BuiltinsPackageFragment extends DeclarationDescriptorImpl implements Packa
return KotlinBuiltIns.class.getClassLoader().getResourceAsStream(path);
}
private class BuiltinsPackageFragmentProvider implements PackageFragmentProvider {
private final PackageFragmentDescriptor rootPackage = new MutablePackageFragmentDescriptor(module, FqName.ROOT);
@NotNull
@Override
public List<PackageFragmentDescriptor> getPackageFragments(@NotNull FqName fqName) {
if (fqName.isRoot()) {
return Collections.singletonList(rootPackage);
}
else if (KotlinBuiltIns.BUILT_INS_PACKAGE_FQ_NAME.equals(fqName)) {
return Collections.<PackageFragmentDescriptor>singletonList(BuiltinsPackageFragment.this);
}
return Collections.emptyList();
}
@NotNull
@Override
public Collection<FqName> getSubPackagesOf(@NotNull FqName fqName) {
if (fqName.isRoot()) {
return Collections.singleton(KotlinBuiltIns.BUILT_INS_PACKAGE_FQ_NAME);
}
return Collections.emptyList();
}
}
private class BuiltInsDescriptorFinder extends AbstractDescriptorFinder {
private final NotNullLazyValue<Collection<Name>> classNames;
public BuiltInsDescriptorFinder(@NotNull StorageManager storageManager) {
super(storageManager, UNSUPPORTED);
super(storageManager, UNSUPPORTED, packageFragmentProvider);
classNames = storageManager.createLazyValue(new Function0<Collection<Name>>() {
@Override
@@ -153,12 +182,6 @@ class BuiltinsPackageFragment extends DeclarationDescriptorImpl implements Packa
}
}
@Nullable
@Override
public PackageFragmentDescriptor findPackage(@NotNull FqName fqName) {
return fqName.equals(KotlinBuiltIns.BUILT_INS_PACKAGE_FQ_NAME) ? BuiltinsPackageFragment.this : null;
}
@NotNull
@Override
public Collection<Name> getClassNames(@NotNull FqName packageName) {
@@ -23,7 +23,6 @@ import org.jetbrains.annotations.Nullable;
import org.jetbrains.jet.lang.PlatformToKotlinClassMap;
import org.jetbrains.jet.lang.descriptors.*;
import org.jetbrains.jet.lang.descriptors.annotations.AnnotationDescriptor;
import org.jetbrains.jet.lang.descriptors.impl.MutablePackageFragmentDescriptor;
import org.jetbrains.jet.lang.descriptors.impl.ValueParameterDescriptorImpl;
import org.jetbrains.jet.lang.resolve.DescriptorUtils;
import org.jetbrains.jet.lang.resolve.ImportPath;
@@ -157,31 +156,8 @@ public class KotlinBuiltIns {
}
private static void loadBuiltIns(@NotNull ModuleDescriptorImpl module) throws IOException {
final PackageFragmentDescriptor rootPackage = new MutablePackageFragmentDescriptor(module, FqName.ROOT);
final PackageFragmentDescriptor builtinsPackage = new BuiltinsPackageFragment(new LockBasedStorageManager(), module);
module.addFragmentProvider(new PackageFragmentProvider() {
@NotNull
@Override
public List<PackageFragmentDescriptor> getPackageFragments(@NotNull FqName fqName) {
if (fqName.isRoot()) {
return Collections.singletonList(rootPackage);
}
else if (BUILT_INS_PACKAGE_FQ_NAME.equals(fqName)) {
return Collections.singletonList(builtinsPackage);
}
return Collections.emptyList();
}
@NotNull
@Override
public Collection<FqName> getSubPackagesOf(@NotNull FqName fqName) {
if (fqName.isRoot()) {
return Collections.singleton(BUILT_INS_PACKAGE_FQ_NAME);
}
return Collections.emptyList();
}
});
BuiltinsPackageFragment builtinsPackageFragment = new BuiltinsPackageFragment(new LockBasedStorageManager(), module);
module.addFragmentProvider(builtinsPackageFragment.packageFragmentProvider);
}
private void doInitialize() {