Debug names for type deserializaers

This commit is contained in:
Andrey Breslav
2013-06-13 15:50:39 +04:00
committed by Alexander Udalov
parent 5492c8875e
commit a861ac0c10
3 changed files with 20 additions and 9 deletions
@@ -41,8 +41,8 @@ public class DescriptorDeserializer {
@NotNull ClassResolver classResolver,
@NotNull AnnotationDeserializer annotationDeserializer
) {
return new DescriptorDeserializer(new TypeDeserializer(null, nameResolver, classResolver), containingDeclaration, nameResolver,
annotationDeserializer);
return new DescriptorDeserializer(new TypeDeserializer(null, nameResolver, classResolver, "Deserializer for " + containingDeclaration),
containingDeclaration, nameResolver, annotationDeserializer);
}
@NotNull
@@ -79,7 +79,8 @@ public class DescriptorDeserializer {
@NotNull
private DescriptorDeserializer createChildDeserializer(@NotNull DeclarationDescriptor descriptor) {
return create(new TypeDeserializer(typeDeserializer), descriptor, nameResolver, annotationDeserializer);
return create(new TypeDeserializer(typeDeserializer, "Child deserializer for " + descriptor),
descriptor, nameResolver, annotationDeserializer);
}
@NotNull
@@ -37,19 +37,23 @@ public class TypeDeserializer {
private final IndexedSymbolTable<TypeParameterDescriptor> typeParameterDescriptors;
private final TIntObjectHashMap<ClassDescriptor> classDescriptors = new TIntObjectHashMap<ClassDescriptor>();
public TypeDeserializer(@NotNull TypeDeserializer parent) {
this(parent, parent.nameResolver, parent.classResolver);
private final String debugName;
public TypeDeserializer(@NotNull TypeDeserializer parent, @NotNull String debugName) {
this(parent, parent.nameResolver, parent.classResolver, debugName);
}
public TypeDeserializer(
@Nullable TypeDeserializer parent,
@NotNull NameResolver nameResolver,
@NotNull ClassResolver classResolver
) {
@NotNull ClassResolver classResolver,
@NotNull String debugName
) {
IndexedSymbolTable<TypeParameterDescriptor> parentTypeParameters = parent == null ? null : parent.typeParameterDescriptors;
this.typeParameterDescriptors = new IndexedSymbolTable<TypeParameterDescriptor>(parentTypeParameters);
this.nameResolver = nameResolver;
this.classResolver = classResolver;
this.debugName = debugName + (parent == null ? "" : ". Child of " + parent.debugName);
}
@NotNull
@@ -221,4 +225,9 @@ public class TypeDeserializer {
}
return ((ClassDescriptor) descriptor).getMemberScope(typeArguments);
}
@Override
public String toString() {
return debugName;
}
}
@@ -74,7 +74,9 @@ public class DeserializedClassDescriptor extends ClassDescriptorBase implements
@Nullable TypeDeserializer outerTypeDeserializer
) {
this.classProto = classProto;
this.typeDeserializer = new TypeDeserializer(outerTypeDeserializer, nameResolver, classResolver);
this.name = nameResolver.getName(classProto.getName());
this.typeDeserializer = new TypeDeserializer(outerTypeDeserializer, nameResolver, classResolver, "Deserializer for class " + name);
this.deserializer = DescriptorDeserializer.create(typeDeserializer, this, nameResolver, annotationResolver);
this.containingDeclaration = containingDeclaration;
@@ -83,7 +85,6 @@ public class DeserializedClassDescriptor extends ClassDescriptorBase implements
this.innerClassesScope = new InnerClassesScopeWrapper(memberScope);
this.thisAsReceiverParameter = new LazyClassReceiverParameterDescriptor();
this.name = nameResolver.getName(classProto.getName());
int flags = classProto.getFlags();
this.modality = DescriptorDeserializer.modality(Flags.MODALITY.get(flags));
this.visibility = DescriptorDeserializer.visibility(Flags.VISIBILITY.get(flags));