Straightforward logic for deserialization descriptors in DeserializedDescriptorResolver

This commit is contained in:
Pavel V. Talanov
2013-07-01 21:40:21 +04:00
committed by Alexander Udalov
parent 0aa4ba3fe6
commit c08f067df2
2 changed files with 21 additions and 70 deletions
@@ -34,7 +34,10 @@ public abstract class AbstractDescriptorFinder implements DescriptorFinder {
private final MemoizedFunctionToNullable<ClassId, ClassDescriptor> findClass;
private final AnnotationDeserializer annotationDeserializer;
public AbstractDescriptorFinder(@NotNull final StorageManager storageManager, @NotNull AnnotationDeserializer annotationDeserializer) {
public AbstractDescriptorFinder(
@NotNull final StorageManager storageManager,
@NotNull AnnotationDeserializer annotationDeserializer
) {
this.annotationDeserializer = annotationDeserializer;
this.findClass = storageManager.createMemoizedFunctionWithNullableValues(new Function<ClassId, ClassDescriptor>() {
@@ -64,16 +67,6 @@ public abstract class AbstractDescriptorFinder implements DescriptorFinder {
@Nullable
@Override
public ClassDescriptor findClass(@NotNull ClassId classId) {
ClassDescriptor externalClassDescriptor = resolveClassExternally(classId);
if (externalClassDescriptor != null) {
return externalClassDescriptor;
}
return findClassInternally(classId);
}
//do not call resolveClassExternally
@Nullable
public ClassDescriptor findClassInternally(@NotNull ClassId classId) {
return findClass.fun(classId);
}
@@ -83,11 +76,5 @@ public abstract class AbstractDescriptorFinder implements DescriptorFinder {
@NotNull
protected abstract DeclarationDescriptor getPackage(@NotNull FqName fqName);
@Nullable
protected ClassDescriptor resolveClassExternally(@NotNull ClassId classId) {
//TODO: decide whether it is ok to provide default implementation
return null;
}
protected abstract void classDescriptorCreated(@NotNull ClassDescriptor classDescriptor);
}