Minor, simplify MemberDeserializer.getAnnotations()

This commit is contained in:
Alexander Udalov
2014-11-21 02:45:13 +03:00
parent 4df7cb4e72
commit 954678ab2b
2 changed files with 25 additions and 29 deletions
@@ -21,7 +21,10 @@ import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.jet.descriptors.serialization.context.DeserializationComponents;
import org.jetbrains.jet.descriptors.serialization.context.DeserializationContext;
import org.jetbrains.jet.descriptors.serialization.descriptors.*;
import org.jetbrains.jet.descriptors.serialization.descriptors.AnnotatedCallableKind;
import org.jetbrains.jet.descriptors.serialization.descriptors.DeserializedPropertyDescriptor;
import org.jetbrains.jet.descriptors.serialization.descriptors.DeserializedSimpleFunctionDescriptor;
import org.jetbrains.jet.descriptors.serialization.descriptors.DeserializedTypeParameterDescriptor;
import org.jetbrains.jet.lang.descriptors.*;
import org.jetbrains.jet.lang.descriptors.annotations.Annotations;
import org.jetbrains.jet.lang.descriptors.impl.ConstructorDescriptorImpl;
@@ -156,9 +159,9 @@ public class MemberDeserializer {
@NotNull
private CallableMemberDescriptor loadFunction(@NotNull Callable proto) {
int flags = proto.getFlags();
Annotations annotations = getAnnotations(proto, proto.getFlags(), AnnotatedCallableKind.FUNCTION);
DeserializedSimpleFunctionDescriptor function = DeserializedSimpleFunctionDescriptor.create(
context.getContainingDeclaration(), proto, getComponents().getAnnotationLoader(), context.getNameResolver()
context.getContainingDeclaration(), proto, context.getNameResolver(), annotations
);
DeserializationContext local = context.childContext(function, proto.getTypeParameterList());
function.initialize(
@@ -167,8 +170,8 @@ public class MemberDeserializer {
local.getTypeDeserializer().getOwnTypeParameters(),
local.getMemberDeserializer().valueParameters(proto, AnnotatedCallableKind.FUNCTION),
local.getTypeDeserializer().type(proto.getReturnType()),
modality(Flags.MODALITY.get(flags)),
visibility(Flags.VISIBILITY.get(flags))
modality(Flags.MODALITY.get(proto.getFlags())),
visibility(Flags.VISIBILITY.get(proto.getFlags()))
);
return function;
}
@@ -201,23 +204,14 @@ public class MemberDeserializer {
@NotNull
private Annotations getAnnotations(@NotNull Callable proto, int flags, @NotNull AnnotatedCallableKind kind) {
return getAnnotations(
context.getContainingDeclaration(), proto, flags, kind, getComponents().getAnnotationLoader(), context.getNameResolver()
);
}
public static Annotations getAnnotations(
@NotNull DeclarationDescriptor containingDeclaration,
@NotNull Callable proto,
int flags,
@NotNull AnnotatedCallableKind kind,
@NotNull AnnotationLoader annotationLoader,
@NotNull NameResolver nameResolver
) {
DeclarationDescriptor containingDeclaration = context.getContainingDeclaration();
assert containingDeclaration instanceof ClassOrPackageFragmentDescriptor
: "Only members in classes or package fragments should be serialized: " + containingDeclaration;
return Flags.HAS_ANNOTATIONS.get(flags) ? annotationLoader.loadCallableAnnotations(
(ClassOrPackageFragmentDescriptor) containingDeclaration, proto, nameResolver, kind) : Annotations.EMPTY;
return Flags.HAS_ANNOTATIONS.get(flags) ?
getComponents().getAnnotationLoader().loadCallableAnnotations(
(ClassOrPackageFragmentDescriptor) containingDeclaration, proto, context.getNameResolver(), kind
) :
Annotations.EMPTY;
}
@NotNull
@@ -18,7 +18,10 @@ package org.jetbrains.jet.descriptors.serialization.descriptors;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.jet.descriptors.serialization.*;
import org.jetbrains.jet.descriptors.serialization.Flags;
import org.jetbrains.jet.descriptors.serialization.NameResolver;
import org.jetbrains.jet.descriptors.serialization.ProtoBuf;
import org.jetbrains.jet.descriptors.serialization.SerializationPackage;
import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor;
import org.jetbrains.jet.lang.descriptors.FunctionDescriptor;
import org.jetbrains.jet.lang.descriptors.SimpleFunctionDescriptor;
@@ -40,7 +43,8 @@ public class DeserializedSimpleFunctionDescriptor extends SimpleFunctionDescript
@NotNull Name name,
@NotNull Kind kind,
@NotNull ProtoBuf.Callable proto,
@NotNull NameResolver nameResolver) {
@NotNull NameResolver nameResolver
) {
super(containingDeclaration, original, annotations, name, kind, SourceElement.NO_SOURCE);
this.proto = proto;
this.nameResolver = nameResolver;
@@ -82,16 +86,13 @@ public class DeserializedSimpleFunctionDescriptor extends SimpleFunctionDescript
return nameResolver;
}
@NotNull
public static DeserializedSimpleFunctionDescriptor create(
@NotNull DeclarationDescriptor containingDeclaration,
@NotNull ProtoBuf.Callable proto,
@NotNull AnnotationLoader annotationLoader,
@NotNull NameResolver nameResolver
@NotNull NameResolver nameResolver,
@NotNull Annotations annotations
) {
Annotations annotations = MemberDeserializer.getAnnotations(containingDeclaration, proto, proto.getFlags(),
AnnotatedCallableKind.FUNCTION,
annotationLoader,
nameResolver);
return new DeserializedSimpleFunctionDescriptor(
containingDeclaration,
null,
@@ -99,6 +100,7 @@ public class DeserializedSimpleFunctionDescriptor extends SimpleFunctionDescript
nameResolver.getName(proto.getName()),
SerializationPackage.memberKind(Flags.MEMBER_KIND.get(proto.getFlags())),
proto,
nameResolver);
nameResolver
);
}
}