Refactor: DescriptorFinder -> ClassDataFinder

Deserialization subsystem only need to know about the way to obtain class data, it can construct descriptors itself (no need to call DeserializedClassDescriptor constructor from other modules)
This commit is contained in:
Pavel V. Talanov
2014-06-16 15:00:57 +04:00
parent 53337f793b
commit 0c8956a36e
14 changed files with 77 additions and 82 deletions
@@ -41,7 +41,6 @@ class BuiltinsPackageFragment extends PackageFragmentDescriptorImpl {
private final DeserializedPackageMemberScope members;
private final NameResolver nameResolver;
private final PackageFragmentProvider packageFragmentProvider;
private final DeserializationContext deserializationContext;
public BuiltinsPackageFragment(@NotNull StorageManager storageManager, @NotNull ModuleDescriptor module) {
super(module, KotlinBuiltIns.BUILT_INS_PACKAGE_FQ_NAME);
@@ -49,12 +48,12 @@ class BuiltinsPackageFragment extends PackageFragmentDescriptorImpl {
packageFragmentProvider = new BuiltinsPackageFragmentProvider();
BuiltInsDescriptorFinder descriptorFinder = new BuiltInsDescriptorFinder(storageManager);
deserializationContext = new DeserializationContext(
storageManager, module, descriptorFinder,
BuiltInsClassDataFinder builtInsClassDataFinder = new BuiltInsClassDataFinder(storageManager);
DeserializationContext deserializationContext = new DeserializationContext(
storageManager, module, builtInsClassDataFinder,
// TODO: support annotations
AnnotationLoader.UNSUPPORTED, ConstantLoader.UNSUPPORTED, packageFragmentProvider,
new ClassDeserializer(storageManager, descriptorFinder), nameResolver
new ClassDeserializer(storageManager, builtInsClassDataFinder), nameResolver
);
members = new DeserializedPackageMemberScope(this, loadPackage(), deserializationContext);
}
@@ -116,10 +115,10 @@ class BuiltinsPackageFragment extends PackageFragmentDescriptorImpl {
}
}
private class BuiltInsDescriptorFinder implements DescriptorFinder {
private class BuiltInsClassDataFinder implements ClassDataFinder {
private final NotNullLazyValue<Collection<Name>> classNames;
public BuiltInsDescriptorFinder(@NotNull StorageManager storageManager) {
public BuiltInsClassDataFinder(@NotNull StorageManager storageManager) {
// TODO: support annotations
classNames = storageManager.createLazyValue(new Function0<Collection<Name>>() {
@Override
@@ -149,7 +148,8 @@ class BuiltinsPackageFragment extends PackageFragmentDescriptorImpl {
}
@Nullable
private ClassData getClassData(@NotNull ClassId classId) {
@Override
public ClassData findClassData(@NotNull ClassId classId) {
InputStream stream = getStreamNullable(BuiltInsSerializationUtil.getClassMetadataPath(classId));
if (stream == null) {
return null;
@@ -173,13 +173,6 @@ class BuiltinsPackageFragment extends PackageFragmentDescriptorImpl {
}
}
@Nullable
@Override
public ClassDescriptor findClass(@NotNull ClassId classId) {
ClassData classData = getClassData(classId);
return classData == null ? null : new DeserializedClassDescriptor(deserializationContext, classData);
}
@NotNull
@Override
public Collection<Name> getClassNames(@NotNull FqName packageName) {