From 1026a6377815c8cb71656c6744772d058db62175 Mon Sep 17 00:00:00 2001 From: Andrey Breslav Date: Wed, 22 May 2013 16:49:35 +0400 Subject: [PATCH] Using "object" for fqNames of class objects --- .../AbstractDescriptorSerializationTest.java | 30 +++++++++++++++---- 1 file changed, 25 insertions(+), 5 deletions(-) diff --git a/compiler/tests/org/jetbrains/jet/descriptors/serialization/AbstractDescriptorSerializationTest.java b/compiler/tests/org/jetbrains/jet/descriptors/serialization/AbstractDescriptorSerializationTest.java index 2b08cc4eaea..d5d5d492cf1 100644 --- a/compiler/tests/org/jetbrains/jet/descriptors/serialization/AbstractDescriptorSerializationTest.java +++ b/compiler/tests/org/jetbrains/jet/descriptors/serialization/AbstractDescriptorSerializationTest.java @@ -143,7 +143,7 @@ public abstract class AbstractDescriptorSerializationTest extends KotlinTestWith ProtoBuf.QualifiedNameTable qualifiedNames = ProtoBuf.QualifiedNameTable.parseDelimitedFrom(in); ProtoBuf.Class proto = ProtoBuf.Class.parseFrom(in); - classMetadata.put(getClassNameString(classDescriptor), new ClassMetadata(simpleNames, qualifiedNames, proto)); + classMetadata.put(getNaiveFqName(classDescriptor), new ClassMetadata(simpleNames, qualifiedNames, proto)); } NamespaceDescriptorImpl namespace = createTestNamespace(); @@ -202,11 +202,31 @@ public abstract class AbstractDescriptorSerializationTest extends KotlinTestWith return namespace; } - private static String getClassNameString(ClassDescriptor classDescriptor) { - if (classDescriptor.getKind() == ClassKind.CLASS_OBJECT) { - return getClassNameString((ClassDescriptor) classDescriptor.getContainingDeclaration()) + "." + JvmAbi.CLASS_OBJECT_CLASS_NAME; + private static String getNaiveFqName(ClassDescriptor classDescriptor) { + return getNaiveFqName(classDescriptor, new StringBuilder()).toString(); + } + + @NotNull + private static StringBuilder getNaiveFqName(@NotNull DeclarationDescriptor descriptor, @NotNull StringBuilder builder) { + DeclarationDescriptor containingDeclaration = descriptor.getContainingDeclaration(); + if (containingDeclaration instanceof ClassDescriptor + || (containingDeclaration instanceof NamespaceDescriptor + && !DescriptorUtils.isRootNamespace((NamespaceDescriptor) containingDeclaration))) { + getNaiveFqName(containingDeclaration, builder); + builder.append("."); } - return DescriptorUtils.getFQName(classDescriptor).getFqName(); + + builder.append(getNaiveName(descriptor)); + + return builder; + } + + private static String getNaiveName(DeclarationDescriptor descriptor) { + if (descriptor instanceof ClassDescriptor) { + ClassDescriptor classDescriptor = (ClassDescriptor) descriptor; + if (classDescriptor.getKind() == ClassKind.CLASS_OBJECT) return JvmAbi.CLASS_OBJECT_CLASS_NAME; + } + return descriptor.getName().getName(); } private static NamespaceDescriptorImpl createTestNamespace() {