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.annotations.Nullable;
import org.jetbrains.jet.descriptors.serialization.context.DeserializationComponents; import org.jetbrains.jet.descriptors.serialization.context.DeserializationComponents;
import org.jetbrains.jet.descriptors.serialization.context.DeserializationContext; 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.*;
import org.jetbrains.jet.lang.descriptors.annotations.Annotations; import org.jetbrains.jet.lang.descriptors.annotations.Annotations;
import org.jetbrains.jet.lang.descriptors.impl.ConstructorDescriptorImpl; import org.jetbrains.jet.lang.descriptors.impl.ConstructorDescriptorImpl;
@@ -156,9 +159,9 @@ public class MemberDeserializer {
@NotNull @NotNull
private CallableMemberDescriptor loadFunction(@NotNull Callable proto) { private CallableMemberDescriptor loadFunction(@NotNull Callable proto) {
int flags = proto.getFlags(); Annotations annotations = getAnnotations(proto, proto.getFlags(), AnnotatedCallableKind.FUNCTION);
DeserializedSimpleFunctionDescriptor function = DeserializedSimpleFunctionDescriptor.create( DeserializedSimpleFunctionDescriptor function = DeserializedSimpleFunctionDescriptor.create(
context.getContainingDeclaration(), proto, getComponents().getAnnotationLoader(), context.getNameResolver() context.getContainingDeclaration(), proto, context.getNameResolver(), annotations
); );
DeserializationContext local = context.childContext(function, proto.getTypeParameterList()); DeserializationContext local = context.childContext(function, proto.getTypeParameterList());
function.initialize( function.initialize(
@@ -167,8 +170,8 @@ public class MemberDeserializer {
local.getTypeDeserializer().getOwnTypeParameters(), local.getTypeDeserializer().getOwnTypeParameters(),
local.getMemberDeserializer().valueParameters(proto, AnnotatedCallableKind.FUNCTION), local.getMemberDeserializer().valueParameters(proto, AnnotatedCallableKind.FUNCTION),
local.getTypeDeserializer().type(proto.getReturnType()), local.getTypeDeserializer().type(proto.getReturnType()),
modality(Flags.MODALITY.get(flags)), modality(Flags.MODALITY.get(proto.getFlags())),
visibility(Flags.VISIBILITY.get(flags)) visibility(Flags.VISIBILITY.get(proto.getFlags()))
); );
return function; return function;
} }
@@ -201,23 +204,14 @@ public class MemberDeserializer {
@NotNull @NotNull
private Annotations getAnnotations(@NotNull Callable proto, int flags, @NotNull AnnotatedCallableKind kind) { private Annotations getAnnotations(@NotNull Callable proto, int flags, @NotNull AnnotatedCallableKind kind) {
return getAnnotations( DeclarationDescriptor containingDeclaration = context.getContainingDeclaration();
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
) {
assert containingDeclaration instanceof ClassOrPackageFragmentDescriptor assert containingDeclaration instanceof ClassOrPackageFragmentDescriptor
: "Only members in classes or package fragments should be serialized: " + containingDeclaration; : "Only members in classes or package fragments should be serialized: " + containingDeclaration;
return Flags.HAS_ANNOTATIONS.get(flags) ? annotationLoader.loadCallableAnnotations( return Flags.HAS_ANNOTATIONS.get(flags) ?
(ClassOrPackageFragmentDescriptor) containingDeclaration, proto, nameResolver, kind) : Annotations.EMPTY; getComponents().getAnnotationLoader().loadCallableAnnotations(
(ClassOrPackageFragmentDescriptor) containingDeclaration, proto, context.getNameResolver(), kind
) :
Annotations.EMPTY;
} }
@NotNull @NotNull
@@ -18,7 +18,10 @@ package org.jetbrains.jet.descriptors.serialization.descriptors;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable; 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.DeclarationDescriptor;
import org.jetbrains.jet.lang.descriptors.FunctionDescriptor; import org.jetbrains.jet.lang.descriptors.FunctionDescriptor;
import org.jetbrains.jet.lang.descriptors.SimpleFunctionDescriptor; import org.jetbrains.jet.lang.descriptors.SimpleFunctionDescriptor;
@@ -40,7 +43,8 @@ public class DeserializedSimpleFunctionDescriptor extends SimpleFunctionDescript
@NotNull Name name, @NotNull Name name,
@NotNull Kind kind, @NotNull Kind kind,
@NotNull ProtoBuf.Callable proto, @NotNull ProtoBuf.Callable proto,
@NotNull NameResolver nameResolver) { @NotNull NameResolver nameResolver
) {
super(containingDeclaration, original, annotations, name, kind, SourceElement.NO_SOURCE); super(containingDeclaration, original, annotations, name, kind, SourceElement.NO_SOURCE);
this.proto = proto; this.proto = proto;
this.nameResolver = nameResolver; this.nameResolver = nameResolver;
@@ -82,16 +86,13 @@ public class DeserializedSimpleFunctionDescriptor extends SimpleFunctionDescript
return nameResolver; return nameResolver;
} }
@NotNull
public static DeserializedSimpleFunctionDescriptor create( public static DeserializedSimpleFunctionDescriptor create(
@NotNull DeclarationDescriptor containingDeclaration, @NotNull DeclarationDescriptor containingDeclaration,
@NotNull ProtoBuf.Callable proto, @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( return new DeserializedSimpleFunctionDescriptor(
containingDeclaration, containingDeclaration,
null, null,
@@ -99,6 +100,7 @@ public class DeserializedSimpleFunctionDescriptor extends SimpleFunctionDescript
nameResolver.getName(proto.getName()), nameResolver.getName(proto.getName()),
SerializationPackage.memberKind(Flags.MEMBER_KIND.get(proto.getFlags())), SerializationPackage.memberKind(Flags.MEMBER_KIND.get(proto.getFlags())),
proto, proto,
nameResolver); nameResolver
);
} }
} }