Minor, add "storageManager" property to context for convenience

This commit is contained in:
Alexander Udalov
2014-11-25 18:22:57 +03:00
parent c35ddc3616
commit 4e735878cf
8 changed files with 23 additions and 21 deletions
@@ -29,13 +29,13 @@ class DeserializedType(
) : AbstractJetType(), LazyType { ) : AbstractJetType(), LazyType {
private val typeDeserializer = c.typeDeserializer private val typeDeserializer = c.typeDeserializer
private val constructor = c.components.storageManager.createLazyValue { private val constructor = c.storageManager.createLazyValue {
typeDeserializer.typeConstructor(typeProto) typeDeserializer.typeConstructor(typeProto)
} }
private val arguments = typeDeserializer.typeArguments(typeProto.getArgumentList()) private val arguments = typeDeserializer.typeArguments(typeProto.getArgumentList())
private val memberScope = c.components.storageManager.createLazyValue { private val memberScope = c.storageManager.createLazyValue {
computeMemberScope() computeMemberScope()
} }
@@ -112,7 +112,7 @@ public class MemberDeserializer(private val c: DeserializationContext) {
if (Flags.HAS_CONSTANT.get(flags)) { if (Flags.HAS_CONSTANT.get(flags)) {
property.setCompileTimeInitializer( property.setCompileTimeInitializer(
c.components.storageManager.createNullableLazyValue { c.storageManager.createNullableLazyValue {
val container = c.containingDeclaration.asClassOrPackage() val container = c.containingDeclaration.asClassOrPackage()
c.components.constantLoader.loadPropertyConstant(container, proto, c.nameResolver, AnnotatedCallableKind.PROPERTY) c.components.constantLoader.loadPropertyConstant(container, proto, c.nameResolver, AnnotatedCallableKind.PROPERTY)
} }
@@ -164,7 +164,7 @@ public class MemberDeserializer(private val c: DeserializationContext) {
if (!Flags.HAS_ANNOTATIONS.get(flags)) { if (!Flags.HAS_ANNOTATIONS.get(flags)) {
return Annotations.EMPTY return Annotations.EMPTY
} }
return DeserializedAnnotations(c.components.storageManager) { return DeserializedAnnotations(c.storageManager) {
c.components.annotationLoader.loadCallableAnnotations( c.components.annotationLoader.loadCallableAnnotations(
c.containingDeclaration.asClassOrPackage(), proto, c.nameResolver, kind c.containingDeclaration.asClassOrPackage(), proto, c.nameResolver, kind
) )
@@ -196,7 +196,7 @@ public class MemberDeserializer(private val c: DeserializationContext) {
if (!Flags.HAS_ANNOTATIONS.get(valueParameter.getFlags())) { if (!Flags.HAS_ANNOTATIONS.get(valueParameter.getFlags())) {
return Annotations.EMPTY return Annotations.EMPTY
} }
return DeserializedAnnotations(c.components.storageManager) { return DeserializedAnnotations(c.storageManager) {
c.components.annotationLoader.loadValueParameterAnnotations(classOrPackage, callable, c.nameResolver, kind, valueParameter) c.components.annotationLoader.loadValueParameterAnnotations(classOrPackage, callable, c.nameResolver, kind, valueParameter)
} }
} }
@@ -31,11 +31,11 @@ public class TypeDeserializer(
private val typeParameterProtos: List<ProtoBuf.TypeParameter>, private val typeParameterProtos: List<ProtoBuf.TypeParameter>,
private val debugName: String private val debugName: String
) { ) {
private val classDescriptors: (Int) -> ClassDescriptor? = c.components.storageManager.createMemoizedFunctionWithNullableValues { private val classDescriptors: (Int) -> ClassDescriptor? = c.storageManager.createMemoizedFunctionWithNullableValues {
fqNameIndex -> computeClassDescriptor(fqNameIndex) fqNameIndex -> computeClassDescriptor(fqNameIndex)
} }
private val typeParameterDescriptors = c.components.storageManager.createLazyValue { private val typeParameterDescriptors = c.storageManager.createLazyValue {
if (typeParameterProtos.isEmpty()) { if (typeParameterProtos.isEmpty()) {
mapOf<Int, TypeParameterDescriptor>() mapOf<Int, TypeParameterDescriptor>()
} }
@@ -53,6 +53,8 @@ public class DeserializationContext(
val memberDeserializer = MemberDeserializer(this) val memberDeserializer = MemberDeserializer(this)
val storageManager: StorageManager get() = components.storageManager
fun childContext( fun childContext(
descriptor: DeclarationDescriptor, descriptor: DeclarationDescriptor,
typeParameterProtos: List<ProtoBuf.TypeParameter>, typeParameterProtos: List<ProtoBuf.TypeParameter>,
@@ -43,7 +43,7 @@ public class DeserializedClassDescriptor(
private val classProto: ProtoBuf.Class, private val classProto: ProtoBuf.Class,
nameResolver: NameResolver nameResolver: NameResolver
) : ClassDescriptor, AbstractClassDescriptor( ) : ClassDescriptor, AbstractClassDescriptor(
outerContext.components.storageManager, outerContext.storageManager,
nameResolver.getClassId(classProto.getFqName()).getRelativeClassName().shortName() nameResolver.getClassId(classProto.getFqName()).getRelativeClassName().shortName()
) { ) {
private val modality = serialization.modality(Flags.MODALITY.get(classProto.getFlags())) private val modality = serialization.modality(Flags.MODALITY.get(classProto.getFlags()))
@@ -62,14 +62,14 @@ public class DeserializedClassDescriptor(
private val enumEntries = EnumEntryClassDescriptors() private val enumEntries = EnumEntryClassDescriptors()
private val containingDeclaration = outerContext.containingDeclaration private val containingDeclaration = outerContext.containingDeclaration
private val primaryConstructor = c.components.storageManager.createNullableLazyValue { computePrimaryConstructor() } private val primaryConstructor = c.storageManager.createNullableLazyValue { computePrimaryConstructor() }
private val classObjectDescriptor = c.components.storageManager.createNullableLazyValue { computeClassObjectDescriptor() } private val classObjectDescriptor = c.storageManager.createNullableLazyValue { computeClassObjectDescriptor() }
private val annotations = private val annotations =
if (!Flags.HAS_ANNOTATIONS.get(classProto.getFlags())) { if (!Flags.HAS_ANNOTATIONS.get(classProto.getFlags())) {
Annotations.EMPTY Annotations.EMPTY
} }
else DeserializedAnnotations(c.components.storageManager) { else DeserializedAnnotations(c.storageManager) {
c.components.annotationLoader.loadClassAnnotations(this, classProto) c.components.annotationLoader.loadClassAnnotations(this, classProto)
} }
@@ -170,7 +170,7 @@ public class DeserializedClassDescriptor(
private inner class DeserializedClassMemberScope : DeserializedMemberScope(c, classProto.getMemberList()) { private inner class DeserializedClassMemberScope : DeserializedMemberScope(c, classProto.getMemberList()) {
private val classDescriptor: DeserializedClassDescriptor get() = this@DeserializedClassDescriptor private val classDescriptor: DeserializedClassDescriptor get() = this@DeserializedClassDescriptor
private val allDescriptors = c.components.storageManager.createLazyValue { private val allDescriptors = c.storageManager.createLazyValue {
computeDescriptors(DescriptorKindFilter.ALL, JetScope.ALL_NAME_FILTER) computeDescriptors(DescriptorKindFilter.ALL, JetScope.ALL_NAME_FILTER)
} }
@@ -241,7 +241,7 @@ public class DeserializedClassDescriptor(
private inner class NestedClassDescriptors { private inner class NestedClassDescriptors {
private val nestedClassNames = nestedClassNames() private val nestedClassNames = nestedClassNames()
val findNestedClass = c.components.storageManager.createMemoizedFunctionWithNullableValues<Name, ClassDescriptor> { val findNestedClass = c.storageManager.createMemoizedFunctionWithNullableValues<Name, ClassDescriptor> {
name -> name ->
if (name in nestedClassNames) { if (name in nestedClassNames) {
c.components.deserializeClass(classId.createNestedClassId(name)) c.components.deserializeClass(classId.createNestedClassId(name))
@@ -279,17 +279,17 @@ public class DeserializedClassDescriptor(
return result return result
} }
val findEnumEntry = c.components.storageManager.createMemoizedFunctionWithNullableValues<Name, ClassDescriptor> { val findEnumEntry = c.storageManager.createMemoizedFunctionWithNullableValues<Name, ClassDescriptor> {
name -> name ->
if (name in enumEntryNames) { if (name in enumEntryNames) {
EnumEntrySyntheticClassDescriptor.create( EnumEntrySyntheticClassDescriptor.create(
c.components.storageManager, this@DeserializedClassDescriptor, name, enumMemberNames, SourceElement.NO_SOURCE c.storageManager, this@DeserializedClassDescriptor, name, enumMemberNames, SourceElement.NO_SOURCE
) )
} }
else null else null
} }
private val enumMemberNames = c.components.storageManager.createLazyValue { computeEnumMemberNames() } private val enumMemberNames = c.storageManager.createLazyValue { computeEnumMemberNames() }
private fun computeEnumMemberNames(): Collection<Name> { private fun computeEnumMemberNames(): Collection<Name> {
// NOTE: order of enum entry members should be irrelevant // NOTE: order of enum entry members should be irrelevant
@@ -45,11 +45,11 @@ public abstract class DeserializedMemberScope protected(
} }
private val membersProtos = private val membersProtos =
c.components.storageManager.createLazyValue { groupByKey(filteredMemberProtos(membersList)) } c.storageManager.createLazyValue { groupByKey(filteredMemberProtos(membersList)) }
private val functions = private val functions =
c.components.storageManager.createMemoizedFunction<Name, Collection<FunctionDescriptor>> { computeFunctions(it) } c.storageManager.createMemoizedFunction<Name, Collection<FunctionDescriptor>> { computeFunctions(it) }
private val properties = private val properties =
c.components.storageManager.createMemoizedFunction<Name, Collection<VariableDescriptor>> { computeProperties(it) } c.storageManager.createMemoizedFunction<Name, Collection<VariableDescriptor>> { computeProperties(it) }
protected open fun filteredMemberProtos(allMemberProtos: Collection<ProtoBuf.Callable>): Collection<ProtoBuf.Callable> = allMemberProtos protected open fun filteredMemberProtos(allMemberProtos: Collection<ProtoBuf.Callable>): Collection<ProtoBuf.Callable> = allMemberProtos
@@ -36,7 +36,7 @@ public open class DeserializedPackageMemberScope(
) : DeserializedMemberScope(components.createContext(packageDescriptor, nameResolver), proto.getMemberList()) { ) : DeserializedMemberScope(components.createContext(packageDescriptor, nameResolver), proto.getMemberList()) {
private val packageFqName = packageDescriptor.fqName private val packageFqName = packageDescriptor.fqName
private val classNames = c.components.storageManager.createLazyValue(classNames) private val classNames = c.storageManager.createLazyValue(classNames)
override fun getDescriptors(kindFilter: DescriptorKindFilter, nameFilter: (Name) -> Boolean) override fun getDescriptors(kindFilter: DescriptorKindFilter, nameFilter: (Name) -> Boolean)
= computeDescriptors(kindFilter, nameFilter) = computeDescriptors(kindFilter, nameFilter)
@@ -35,7 +35,7 @@ public class DeserializedTypeParameterDescriptor extends AbstractLazyTypeParamet
private final TypeDeserializer typeDeserializer; private final TypeDeserializer typeDeserializer;
public DeserializedTypeParameterDescriptor(@NotNull DeserializationContext c, @NotNull ProtoBuf.TypeParameter proto, int index) { public DeserializedTypeParameterDescriptor(@NotNull DeserializationContext c, @NotNull ProtoBuf.TypeParameter proto, int index) {
super(c.getComponents().getStorageManager(), super(c.getStorageManager(),
c.getContainingDeclaration(), c.getContainingDeclaration(),
c.getNameResolver().getName(proto.getName()), c.getNameResolver().getName(proto.getName()),
SerializationPackage.variance(proto.getVariance()), SerializationPackage.variance(proto.getVariance()),