Annotations used instead of List<AnnotationDescriptor>

This commit is contained in:
Andrey Breslav
2014-01-17 19:24:25 +04:00
parent 314b1e371b
commit 6ce0b9b919
91 changed files with 433 additions and 376 deletions
@@ -23,6 +23,8 @@ import org.jetbrains.jet.descriptors.serialization.descriptors.DeserializedSimpl
import org.jetbrains.jet.descriptors.serialization.descriptors.DeserializedTypeParameterDescriptor;
import org.jetbrains.jet.lang.descriptors.*;
import org.jetbrains.jet.lang.descriptors.annotations.AnnotationDescriptor;
import org.jetbrains.jet.lang.descriptors.annotations.Annotations;
import org.jetbrains.jet.lang.descriptors.annotations.AnnotationsImpl;
import org.jetbrains.jet.lang.descriptors.impl.*;
import org.jetbrains.jet.lang.resolve.DescriptorFactory;
import org.jetbrains.jet.lang.resolve.DescriptorUtils;
@@ -248,11 +250,11 @@ public class DescriptorDeserializer {
}
@NotNull
private List<AnnotationDescriptor> getAnnotations(@NotNull Callable proto, int flags, @NotNull AnnotatedCallableKind kind) {
private Annotations getAnnotations(@NotNull Callable proto, int flags, @NotNull AnnotatedCallableKind kind) {
return getAnnotations(containingDeclaration, proto, flags, kind, annotationDeserializer, nameResolver);
}
public static List<AnnotationDescriptor> getAnnotations(
public static Annotations getAnnotations(
@NotNull DeclarationDescriptor containingDeclaration,
@NotNull Callable proto,
int flags,
@@ -265,7 +267,7 @@ public class DescriptorDeserializer {
return Flags.HAS_ANNOTATIONS.get(flags)
? annotationDeserializer
.loadCallableAnnotations((ClassOrPackageFragmentDescriptor) containingDeclaration, proto, nameResolver, kind)
: Collections.<AnnotationDescriptor>emptyList();
: Annotations.EMPTY;
}
public static CallableMemberDescriptor.Kind memberKind(Callable.MemberKind memberKind) {
@@ -393,7 +395,7 @@ public class DescriptorDeserializer {
}
@NotNull
private List<AnnotationDescriptor> getAnnotations(
private Annotations getAnnotations(
@NotNull ClassOrPackageFragmentDescriptor classOrPackage,
@NotNull Callable callable,
@NotNull AnnotatedCallableKind kind,
@@ -401,6 +403,6 @@ public class DescriptorDeserializer {
) {
return Flags.HAS_ANNOTATIONS.get(valueParameter.getFlags())
? annotationDeserializer.loadValueParameterAnnotations(classOrPackage, callable, nameResolver, kind, valueParameter)
: Collections.<AnnotationDescriptor>emptyList();
: Annotations.EMPTY;
}
}
@@ -431,7 +431,7 @@ public class DescriptorSerializer {
}
private static boolean hasAnnotations(Annotated descriptor) {
return !descriptor.getAnnotations().isEmpty();
return !descriptor.getAnnotations().getAnnotationDescriptors().isEmpty();
}
@NotNull
@@ -25,7 +25,7 @@ import org.jetbrains.jet.descriptors.serialization.descriptors.DeserializedTypeP
import org.jetbrains.jet.lang.descriptors.ClassDescriptor;
import org.jetbrains.jet.lang.descriptors.ClassifierDescriptor;
import org.jetbrains.jet.lang.descriptors.TypeParameterDescriptor;
import org.jetbrains.jet.lang.descriptors.annotations.AnnotationDescriptor;
import org.jetbrains.jet.lang.descriptors.annotations.Annotations;
import org.jetbrains.jet.lang.resolve.scopes.JetScope;
import org.jetbrains.jet.lang.types.*;
import org.jetbrains.jet.storage.MemoizedFunctionToNullable;
@@ -270,8 +270,8 @@ public class TypeDeserializer {
@NotNull
@Override
public List<AnnotationDescriptor> getAnnotations() {
return Collections.emptyList();
public Annotations getAnnotations() {
return Annotations.EMPTY;
}
}
}
@@ -21,21 +21,19 @@ import org.jetbrains.jet.descriptors.serialization.NameResolver;
import org.jetbrains.jet.descriptors.serialization.ProtoBuf;
import org.jetbrains.jet.lang.descriptors.ClassDescriptor;
import org.jetbrains.jet.lang.descriptors.ClassOrPackageFragmentDescriptor;
import org.jetbrains.jet.lang.descriptors.annotations.AnnotationDescriptor;
import java.util.List;
import org.jetbrains.jet.lang.descriptors.annotations.Annotations;
public interface AnnotationDeserializer {
AnnotationDeserializer UNSUPPORTED = new AnnotationDeserializer() {
@NotNull
@Override
public List<AnnotationDescriptor> loadClassAnnotations(@NotNull ClassDescriptor descriptor, @NotNull ProtoBuf.Class classProto) {
public Annotations loadClassAnnotations(@NotNull ClassDescriptor descriptor, @NotNull ProtoBuf.Class classProto) {
return notSupported();
}
@NotNull
@Override
public List<AnnotationDescriptor> loadCallableAnnotations(
public Annotations loadCallableAnnotations(
@NotNull ClassOrPackageFragmentDescriptor container,
@NotNull ProtoBuf.Callable proto,
@NotNull NameResolver nameResolver,
@@ -46,7 +44,7 @@ public interface AnnotationDeserializer {
@NotNull
@Override
public List<AnnotationDescriptor> loadValueParameterAnnotations(
public Annotations loadValueParameterAnnotations(
@NotNull ClassOrPackageFragmentDescriptor container,
@NotNull ProtoBuf.Callable callable,
@NotNull NameResolver nameResolver,
@@ -57,7 +55,7 @@ public interface AnnotationDeserializer {
}
@NotNull
private List<AnnotationDescriptor> notSupported() {
private Annotations notSupported() {
throw new UnsupportedOperationException("Annotations are not supported");
}
};
@@ -70,10 +68,10 @@ public interface AnnotationDeserializer {
}
@NotNull
List<AnnotationDescriptor> loadClassAnnotations(@NotNull ClassDescriptor descriptor, @NotNull ProtoBuf.Class classProto);
Annotations loadClassAnnotations(@NotNull ClassDescriptor descriptor, @NotNull ProtoBuf.Class classProto);
@NotNull
List<AnnotationDescriptor> loadCallableAnnotations(
Annotations loadCallableAnnotations(
@NotNull ClassOrPackageFragmentDescriptor container,
@NotNull ProtoBuf.Callable proto,
@NotNull NameResolver nameResolver,
@@ -81,7 +79,7 @@ public interface AnnotationDeserializer {
);
@NotNull
List<AnnotationDescriptor> loadValueParameterAnnotations(
Annotations loadValueParameterAnnotations(
@NotNull ClassOrPackageFragmentDescriptor container,
@NotNull ProtoBuf.Callable callable,
@NotNull NameResolver nameResolver,
@@ -24,6 +24,7 @@ import org.jetbrains.annotations.Nullable;
import org.jetbrains.jet.descriptors.serialization.*;
import org.jetbrains.jet.lang.descriptors.*;
import org.jetbrains.jet.lang.descriptors.annotations.AnnotationDescriptor;
import org.jetbrains.jet.lang.descriptors.annotations.Annotations;
import org.jetbrains.jet.lang.descriptors.impl.AbstractClassDescriptor;
import org.jetbrains.jet.lang.descriptors.impl.ConstructorDescriptorImpl;
import org.jetbrains.jet.lang.descriptors.impl.EnumEntrySyntheticClassDescriptor;
@@ -59,7 +60,7 @@ public class DeserializedClassDescriptor extends AbstractClassDescriptor impleme
private final NullableLazyValue<ConstructorDescriptor> primaryConstructor;
private final AnnotationDeserializer annotationDeserializer;
private final NotNullLazyValue<List<AnnotationDescriptor>> annotations;
private final NotNullLazyValue<Annotations> annotations;
private final NullableLazyValue<ClassDescriptor> classObjectDescriptor;
@@ -114,9 +115,9 @@ public class DeserializedClassDescriptor extends AbstractClassDescriptor impleme
this.isInner = Flags.INNER.get(flags);
this.annotationDeserializer = annotationResolver;
this.annotations = storageManager.createLazyValue(new Function0<List<AnnotationDescriptor>>() {
this.annotations = storageManager.createLazyValue(new Function0<Annotations>() {
@Override
public List<AnnotationDescriptor> invoke() {
public Annotations invoke() {
return computeAnnotations();
}
});
@@ -187,16 +188,16 @@ public class DeserializedClassDescriptor extends AbstractClassDescriptor impleme
return isInner;
}
private List<AnnotationDescriptor> computeAnnotations() {
private Annotations computeAnnotations() {
if (!Flags.HAS_ANNOTATIONS.get(classProto.getFlags())) {
return Collections.emptyList();
return Annotations.EMPTY;
}
return annotationDeserializer.loadClassAnnotations(this, classProto);
}
@NotNull
@Override
public List<AnnotationDescriptor> getAnnotations() {
public Annotations getAnnotations() {
return annotations.invoke();
}
@@ -349,8 +350,8 @@ public class DeserializedClassDescriptor extends AbstractClassDescriptor impleme
@NotNull
@Override
public List<AnnotationDescriptor> getAnnotations() {
return Collections.emptyList(); // TODO
public Annotations getAnnotations() {
return Annotations.EMPTY; // TODO
}
@Override
@@ -23,13 +23,11 @@ import org.jetbrains.jet.descriptors.serialization.NameResolver;
import org.jetbrains.jet.descriptors.serialization.ProtoBuf;
import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor;
import org.jetbrains.jet.lang.descriptors.SimpleFunctionDescriptor;
import org.jetbrains.jet.lang.descriptors.annotations.AnnotationDescriptor;
import org.jetbrains.jet.lang.descriptors.annotations.Annotations;
import org.jetbrains.jet.lang.descriptors.impl.FunctionDescriptorImpl;
import org.jetbrains.jet.lang.descriptors.impl.SimpleFunctionDescriptorImpl;
import org.jetbrains.jet.lang.resolve.name.Name;
import java.util.List;
public class DeserializedSimpleFunctionDescriptor extends SimpleFunctionDescriptorImpl {
private final ProtoBuf.Callable functionProto;
@@ -37,7 +35,7 @@ public class DeserializedSimpleFunctionDescriptor extends SimpleFunctionDescript
private DeserializedSimpleFunctionDescriptor(
@NotNull DeclarationDescriptor containingDeclaration,
@NotNull List<AnnotationDescriptor> annotations,
@NotNull Annotations annotations,
@NotNull Name name,
@NotNull Kind kind,
@NotNull ProtoBuf.Callable functionProto,
@@ -51,7 +49,7 @@ public class DeserializedSimpleFunctionDescriptor extends SimpleFunctionDescript
private DeserializedSimpleFunctionDescriptor(
@NotNull DeclarationDescriptor containingDeclaration,
@NotNull SimpleFunctionDescriptor original,
@NotNull List<AnnotationDescriptor> annotations,
@NotNull Annotations annotations,
@NotNull Name name,
@NotNull Kind kind,
@NotNull ProtoBuf.Callable functionProto,