Minor. Moved deserialized util functions from top-level to object

This commit is contained in:
Stanislav Erokhin
2015-09-04 21:37:09 +03:00
parent bcb88d78dd
commit 377f752837
7 changed files with 68 additions and 58 deletions
@@ -50,11 +50,11 @@ public class MemberDeserializer(private val c: DeserializationContext) {
val property = DeserializedPropertyDescriptor( val property = DeserializedPropertyDescriptor(
c.containingDeclaration, null, c.containingDeclaration, null,
getAnnotations(proto, flags, AnnotatedCallableKind.PROPERTY), getAnnotations(proto, flags, AnnotatedCallableKind.PROPERTY),
modality(Flags.MODALITY.get(flags)), Deserialization.modality(Flags.MODALITY.get(flags)),
visibility(Flags.VISIBILITY.get(flags)), Deserialization.visibility(Flags.VISIBILITY.get(flags)),
Flags.CALLABLE_KIND.get(flags) == Callable.CallableKind.VAR, Flags.CALLABLE_KIND.get(flags) == Callable.CallableKind.VAR,
c.nameResolver.getName(proto.getName()), c.nameResolver.getName(proto.getName()),
memberKind(Flags.MEMBER_KIND.get(flags)), Deserialization.memberKind(Flags.MEMBER_KIND.get(flags)),
proto, proto,
c.nameResolver, c.nameResolver,
Flags.LATE_INIT.get(flags) Flags.LATE_INIT.get(flags)
@@ -82,8 +82,8 @@ public class MemberDeserializer(private val c: DeserializationContext) {
PropertyGetterDescriptorImpl( PropertyGetterDescriptorImpl(
property, property,
getAnnotations(proto, getterFlags, AnnotatedCallableKind.PROPERTY_GETTER), getAnnotations(proto, getterFlags, AnnotatedCallableKind.PROPERTY_GETTER),
modality(Flags.MODALITY.get(getterFlags)), Deserialization.modality(Flags.MODALITY.get(getterFlags)),
visibility(Flags.VISIBILITY.get(getterFlags)), Deserialization.visibility(Flags.VISIBILITY.get(getterFlags)),
/* hasBody = */ isNotDefault, /* hasBody = */ isNotDefault,
/* isDefault = */ !isNotDefault, /* isDefault = */ !isNotDefault,
property.getKind(), null, SourceElement.NO_SOURCE property.getKind(), null, SourceElement.NO_SOURCE
@@ -106,8 +106,8 @@ public class MemberDeserializer(private val c: DeserializationContext) {
val setter = PropertySetterDescriptorImpl( val setter = PropertySetterDescriptorImpl(
property, property,
getAnnotations(proto, setterFlags, AnnotatedCallableKind.PROPERTY_SETTER), getAnnotations(proto, setterFlags, AnnotatedCallableKind.PROPERTY_SETTER),
modality(Flags.MODALITY.get(setterFlags)), Deserialization.modality(Flags.MODALITY.get(setterFlags)),
visibility(Flags.VISIBILITY.get(setterFlags)), Deserialization.visibility(Flags.VISIBILITY.get(setterFlags)),
/* hasBody = */ isNotDefault, /* hasBody = */ isNotDefault,
/* isDefault = */ !isNotDefault, /* isDefault = */ !isNotDefault,
property.getKind(), null, SourceElement.NO_SOURCE property.getKind(), null, SourceElement.NO_SOURCE
@@ -150,8 +150,8 @@ public class MemberDeserializer(private val c: DeserializationContext) {
local.typeDeserializer.ownTypeParameters, local.typeDeserializer.ownTypeParameters,
local.memberDeserializer.valueParameters(proto, AnnotatedCallableKind.FUNCTION), local.memberDeserializer.valueParameters(proto, AnnotatedCallableKind.FUNCTION),
local.typeDeserializer.type(proto.getReturnType()), local.typeDeserializer.type(proto.getReturnType()),
modality(Flags.MODALITY.get(proto.getFlags())), Deserialization.modality(Flags.MODALITY.get(proto.getFlags())),
visibility(Flags.VISIBILITY.get(proto.getFlags())) Deserialization.visibility(Flags.VISIBILITY.get(proto.getFlags()))
) )
return function return function
} }
@@ -170,7 +170,7 @@ public class MemberDeserializer(private val c: DeserializationContext) {
descriptor.initialize( descriptor.initialize(
classDescriptor.getTypeConstructor().getParameters(), classDescriptor.getTypeConstructor().getParameters(),
local.memberDeserializer.valueParameters(proto, AnnotatedCallableKind.FUNCTION), local.memberDeserializer.valueParameters(proto, AnnotatedCallableKind.FUNCTION),
visibility(Flags.VISIBILITY.get(proto.getFlags())) Deserialization.visibility(Flags.VISIBILITY.get(proto.getFlags()))
) )
descriptor.setReturnType(local.typeDeserializer.type(proto.getReturnType())) descriptor.setReturnType(local.typeDeserializer.type(proto.getReturnType()))
return descriptor return descriptor
@@ -130,7 +130,7 @@ public class TypeDeserializer(
TypeBasedStarProjectionImpl(c.components.moduleDescriptor.builtIns.getNullableAnyType()) TypeBasedStarProjectionImpl(c.components.moduleDescriptor.builtIns.getNullableAnyType())
else else
StarProjectionImpl(parameter) StarProjectionImpl(parameter)
else TypeProjectionImpl(variance(typeArgumentProto.getProjection()), type(typeArgumentProto.getType())) else TypeProjectionImpl(Deserialization.variance(typeArgumentProto.getProjection()), type(typeArgumentProto.getType()))
} }
override fun toString() = debugName + (if (parent == null) "" else ". Child of ${parent.debugName}") override fun toString() = debugName + (if (parent == null) "" else ". Child of ${parent.debugName}")
@@ -30,7 +30,7 @@ import org.jetbrains.kotlin.resolve.scopes.JetScope
import org.jetbrains.kotlin.resolve.scopes.StaticScopeForKotlinClass import org.jetbrains.kotlin.resolve.scopes.StaticScopeForKotlinClass
import org.jetbrains.kotlin.serialization.Flags import org.jetbrains.kotlin.serialization.Flags
import org.jetbrains.kotlin.serialization.ProtoBuf import org.jetbrains.kotlin.serialization.ProtoBuf
import org.jetbrains.kotlin.serialization.deserialization import org.jetbrains.kotlin.serialization.deserialization.Deserialization
import org.jetbrains.kotlin.serialization.deserialization.DeserializationContext import org.jetbrains.kotlin.serialization.deserialization.DeserializationContext
import org.jetbrains.kotlin.serialization.deserialization.DeserializedType import org.jetbrains.kotlin.serialization.deserialization.DeserializedType
import org.jetbrains.kotlin.serialization.deserialization.NameResolver import org.jetbrains.kotlin.serialization.deserialization.NameResolver
@@ -51,10 +51,10 @@ public class DeserializedClassDescriptor(
outerContext.storageManager, outerContext.storageManager,
nameResolver.getClassId(classProto.getFqName()).getShortClassName() nameResolver.getClassId(classProto.getFqName()).getShortClassName()
) { ) {
private val modality = deserialization.modality(Flags.MODALITY.get(classProto.getFlags())) private val modality = Deserialization.modality(Flags.MODALITY.get(classProto.getFlags()))
private val visibility = deserialization.visibility(Flags.VISIBILITY.get(classProto.getFlags())) private val visibility = Deserialization.visibility(Flags.VISIBILITY.get(classProto.getFlags()))
private val kindFromProto = Flags.CLASS_KIND.get(classProto.getFlags()) private val kindFromProto = Flags.CLASS_KIND.get(classProto.getFlags())
private val kind = deserialization.classKind(kindFromProto) private val kind = Deserialization.classKind(kindFromProto)
private val isCompanion = kindFromProto == ProtoBuf.Class.Kind.CLASS_OBJECT private val isCompanion = kindFromProto == ProtoBuf.Class.Kind.CLASS_OBJECT
private val isInner = Flags.INNER.get(classProto.getFlags()) private val isInner = Flags.INNER.get(classProto.getFlags())
@@ -28,6 +28,7 @@ import org.jetbrains.kotlin.descriptors.impl.SimpleFunctionDescriptorImpl;
import org.jetbrains.kotlin.name.Name; import org.jetbrains.kotlin.name.Name;
import org.jetbrains.kotlin.serialization.Flags; import org.jetbrains.kotlin.serialization.Flags;
import org.jetbrains.kotlin.serialization.ProtoBuf; import org.jetbrains.kotlin.serialization.ProtoBuf;
import org.jetbrains.kotlin.serialization.deserialization.Deserialization;
import org.jetbrains.kotlin.serialization.deserialization.DeserializationPackage; import org.jetbrains.kotlin.serialization.deserialization.DeserializationPackage;
import org.jetbrains.kotlin.serialization.deserialization.NameResolver; import org.jetbrains.kotlin.serialization.deserialization.NameResolver;
@@ -98,7 +99,7 @@ public class DeserializedSimpleFunctionDescriptor extends SimpleFunctionDescript
null, null,
annotations, annotations,
nameResolver.getName(proto.getName()), nameResolver.getName(proto.getName()),
DeserializationPackage.memberKind(Flags.MEMBER_KIND.get(proto.getFlags())), Deserialization.memberKind(Flags.MEMBER_KIND.get(proto.getFlags())),
proto, proto,
nameResolver nameResolver
); );
@@ -21,6 +21,7 @@ import org.jetbrains.kotlin.descriptors.SourceElement;
import org.jetbrains.kotlin.descriptors.annotations.Annotations; import org.jetbrains.kotlin.descriptors.annotations.Annotations;
import org.jetbrains.kotlin.descriptors.impl.AbstractLazyTypeParameterDescriptor; import org.jetbrains.kotlin.descriptors.impl.AbstractLazyTypeParameterDescriptor;
import org.jetbrains.kotlin.serialization.ProtoBuf; import org.jetbrains.kotlin.serialization.ProtoBuf;
import org.jetbrains.kotlin.serialization.deserialization.Deserialization;
import org.jetbrains.kotlin.serialization.deserialization.DeserializationContext; import org.jetbrains.kotlin.serialization.deserialization.DeserializationContext;
import org.jetbrains.kotlin.serialization.deserialization.DeserializationPackage; import org.jetbrains.kotlin.serialization.deserialization.DeserializationPackage;
import org.jetbrains.kotlin.serialization.deserialization.TypeDeserializer; import org.jetbrains.kotlin.serialization.deserialization.TypeDeserializer;
@@ -40,7 +41,7 @@ public class DeserializedTypeParameterDescriptor extends AbstractLazyTypeParamet
super(c.getStorageManager(), super(c.getStorageManager(),
c.getContainingDeclaration(), c.getContainingDeclaration(),
c.getNameResolver().getName(proto.getName()), c.getNameResolver().getName(proto.getName()),
DeserializationPackage.variance(proto.getVariance()), Deserialization.variance(proto.getVariance()),
proto.getReified(), proto.getReified(),
index, index,
SourceElement.NO_SOURCE); SourceElement.NO_SOURCE);
@@ -24,47 +24,55 @@ import org.jetbrains.kotlin.descriptors.ClassKind
import org.jetbrains.kotlin.serialization.ProtoBuf.TypeParameter import org.jetbrains.kotlin.serialization.ProtoBuf.TypeParameter
import org.jetbrains.kotlin.types.Variance import org.jetbrains.kotlin.types.Variance
fun memberKind(memberKind: ProtoBuf.Callable.MemberKind) = when (memberKind) { object Deserialization {
ProtoBuf.Callable.MemberKind.DECLARATION -> CallableMemberDescriptor.Kind.DECLARATION @JvmStatic
ProtoBuf.Callable.MemberKind.FAKE_OVERRIDE -> CallableMemberDescriptor.Kind.FAKE_OVERRIDE fun memberKind(memberKind: ProtoBuf.Callable.MemberKind) = when (memberKind) {
ProtoBuf.Callable.MemberKind.DELEGATION -> CallableMemberDescriptor.Kind.DELEGATION ProtoBuf.Callable.MemberKind.DECLARATION -> CallableMemberDescriptor.Kind.DECLARATION
ProtoBuf.Callable.MemberKind.SYNTHESIZED -> CallableMemberDescriptor.Kind.SYNTHESIZED ProtoBuf.Callable.MemberKind.FAKE_OVERRIDE -> CallableMemberDescriptor.Kind.FAKE_OVERRIDE
} ProtoBuf.Callable.MemberKind.DELEGATION -> CallableMemberDescriptor.Kind.DELEGATION
ProtoBuf.Callable.MemberKind.SYNTHESIZED -> CallableMemberDescriptor.Kind.SYNTHESIZED
}
fun modality(modality: ProtoBuf.Modality) = when (modality) { @JvmStatic
ProtoBuf.Modality.FINAL -> Modality.FINAL fun modality(modality: ProtoBuf.Modality) = when (modality) {
ProtoBuf.Modality.OPEN -> Modality.OPEN ProtoBuf.Modality.FINAL -> Modality.FINAL
ProtoBuf.Modality.ABSTRACT -> Modality.ABSTRACT ProtoBuf.Modality.OPEN -> Modality.OPEN
ProtoBuf.Modality.SEALED -> Modality.SEALED ProtoBuf.Modality.ABSTRACT -> Modality.ABSTRACT
} ProtoBuf.Modality.SEALED -> Modality.SEALED
}
fun visibility(visibility: ProtoBuf.Visibility) = when (visibility) { @JvmStatic
ProtoBuf.Visibility.INTERNAL -> Visibilities.INTERNAL fun visibility(visibility: ProtoBuf.Visibility) = when (visibility) {
ProtoBuf.Visibility.PRIVATE -> Visibilities.PRIVATE ProtoBuf.Visibility.INTERNAL -> Visibilities.INTERNAL
ProtoBuf.Visibility.PRIVATE_TO_THIS -> Visibilities.PRIVATE_TO_THIS ProtoBuf.Visibility.PRIVATE -> Visibilities.PRIVATE
ProtoBuf.Visibility.PROTECTED -> Visibilities.PROTECTED ProtoBuf.Visibility.PRIVATE_TO_THIS -> Visibilities.PRIVATE_TO_THIS
ProtoBuf.Visibility.PUBLIC -> Visibilities.PUBLIC ProtoBuf.Visibility.PROTECTED -> Visibilities.PROTECTED
ProtoBuf.Visibility.LOCAL -> Visibilities.LOCAL ProtoBuf.Visibility.PUBLIC -> Visibilities.PUBLIC
} ProtoBuf.Visibility.LOCAL -> Visibilities.LOCAL
}
public fun classKind(kind: ProtoBuf.Class.Kind): ClassKind = when (kind) { @JvmStatic
ProtoBuf.Class.Kind.CLASS -> ClassKind.CLASS fun classKind(kind: ProtoBuf.Class.Kind): ClassKind = when (kind) {
ProtoBuf.Class.Kind.TRAIT -> ClassKind.INTERFACE ProtoBuf.Class.Kind.CLASS -> ClassKind.CLASS
ProtoBuf.Class.Kind.ENUM_CLASS -> ClassKind.ENUM_CLASS ProtoBuf.Class.Kind.TRAIT -> ClassKind.INTERFACE
ProtoBuf.Class.Kind.ENUM_ENTRY -> ClassKind.ENUM_ENTRY ProtoBuf.Class.Kind.ENUM_CLASS -> ClassKind.ENUM_CLASS
ProtoBuf.Class.Kind.ANNOTATION_CLASS -> ClassKind.ANNOTATION_CLASS ProtoBuf.Class.Kind.ENUM_ENTRY -> ClassKind.ENUM_ENTRY
ProtoBuf.Class.Kind.OBJECT, ProtoBuf.Class.Kind.CLASS_OBJECT -> ClassKind.OBJECT ProtoBuf.Class.Kind.ANNOTATION_CLASS -> ClassKind.ANNOTATION_CLASS
} ProtoBuf.Class.Kind.OBJECT, ProtoBuf.Class.Kind.CLASS_OBJECT -> ClassKind.OBJECT
}
fun variance(variance: TypeParameter.Variance) = when (variance) { @JvmStatic
ProtoBuf.TypeParameter.Variance.IN -> Variance.IN_VARIANCE fun variance(variance: TypeParameter.Variance) = when (variance) {
ProtoBuf.TypeParameter.Variance.OUT -> Variance.OUT_VARIANCE ProtoBuf.TypeParameter.Variance.IN -> Variance.IN_VARIANCE
ProtoBuf.TypeParameter.Variance.INV -> Variance.INVARIANT ProtoBuf.TypeParameter.Variance.OUT -> Variance.OUT_VARIANCE
} ProtoBuf.TypeParameter.Variance.INV -> Variance.INVARIANT
}
fun variance(variance: ProtoBuf.Type.Argument.Projection) = when (variance) { @JvmStatic
ProtoBuf.Type.Argument.Projection.IN -> Variance.IN_VARIANCE fun variance(variance: ProtoBuf.Type.Argument.Projection) = when (variance) {
ProtoBuf.Type.Argument.Projection.OUT -> Variance.OUT_VARIANCE ProtoBuf.Type.Argument.Projection.IN -> Variance.IN_VARIANCE
ProtoBuf.Type.Argument.Projection.INV -> Variance.INVARIANT ProtoBuf.Type.Argument.Projection.OUT -> Variance.OUT_VARIANCE
else -> throw IllegalArgumentException("Only IN, OUT and INV are supported. Actual argument: $variance") ProtoBuf.Type.Argument.Projection.INV -> Variance.INVARIANT
} else -> throw IllegalArgumentException("Only IN, OUT and INV are supported. Actual argument: $variance")
}
}
@@ -48,7 +48,7 @@ import org.jetbrains.kotlin.resolve.jvm.JvmClassName
import org.jetbrains.kotlin.resolve.jvm.JvmClassName.byInternalName import org.jetbrains.kotlin.resolve.jvm.JvmClassName.byInternalName
import org.jetbrains.kotlin.serialization.Flags import org.jetbrains.kotlin.serialization.Flags
import org.jetbrains.kotlin.serialization.ProtoBuf import org.jetbrains.kotlin.serialization.ProtoBuf
import org.jetbrains.kotlin.serialization.deserialization.visibility import org.jetbrains.kotlin.serialization.deserialization.Deserialization
import org.jetbrains.kotlin.serialization.jvm.BitEncoding import org.jetbrains.kotlin.serialization.jvm.BitEncoding
import org.jetbrains.kotlin.serialization.jvm.JvmProtoBufUtil import org.jetbrains.kotlin.serialization.jvm.JvmProtoBufUtil
import org.jetbrains.org.objectweb.asm.* import org.jetbrains.org.objectweb.asm.*
@@ -399,7 +399,7 @@ public class IncrementalCacheImpl(
return true return true
} }
private fun ProtoBuf.Callable.isPrivate(): Boolean = Visibilities.isPrivate(visibility(Flags.VISIBILITY.get(flags))) private fun ProtoBuf.Callable.isPrivate(): Boolean = Visibilities.isPrivate(Deserialization.visibility(Flags.VISIBILITY.get(flags)))
} }
return compareObject.checkEquals(oldClassData.classProto, newClassData.classProto) return compareObject.checkEquals(oldClassData.classProto, newClassData.classProto)