From 7f2f3a60a7a474f326af7532461bdfea0043b558 Mon Sep 17 00:00:00 2001 From: Andrey Breslav Date: Tue, 21 May 2013 18:22:47 +0400 Subject: [PATCH] Object descriptors added --- .../serialization/DescriptorSerializer.java | 12 ++++++------ .../AbstractDescriptorSerializationTest.java | 13 +++++++++++-- 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/compiler/frontend/serialization/src/org/jetbrains/jet/descriptors/serialization/DescriptorSerializer.java b/compiler/frontend/serialization/src/org/jetbrains/jet/descriptors/serialization/DescriptorSerializer.java index f9048f7c3f1..c594f1037c3 100644 --- a/compiler/frontend/serialization/src/org/jetbrains/jet/descriptors/serialization/DescriptorSerializer.java +++ b/compiler/frontend/serialization/src/org/jetbrains/jet/descriptors/serialization/DescriptorSerializer.java @@ -92,12 +92,12 @@ public class DescriptorSerializer { for (DeclarationDescriptor descriptor : nestedClasses) { ClassDescriptor nestedClass = (ClassDescriptor) descriptor; int nameIndex = nameTable.getSimpleNameIndex(nestedClass.getName()); - if (nestedClass.getKind().isObject()) { - builder.addNestedObjectNames(nameIndex); - } - else { - builder.addNestedClassNames(nameIndex); - } + builder.addNestedClassNames(nameIndex); + } + + for (ClassDescriptor descriptor : classDescriptor.getUnsubstitutedInnerClassesScope().getObjectDescriptors()) { + int nameIndex = nameTable.getSimpleNameIndex(descriptor.getName()); + builder.addNestedObjectNames(nameIndex); } if (classDescriptor.getClassObjectDescriptor() != null) { diff --git a/compiler/tests/org/jetbrains/jet/descriptors/serialization/AbstractDescriptorSerializationTest.java b/compiler/tests/org/jetbrains/jet/descriptors/serialization/AbstractDescriptorSerializationTest.java index 99ed8c51933..36855d32d50 100644 --- a/compiler/tests/org/jetbrains/jet/descriptors/serialization/AbstractDescriptorSerializationTest.java +++ b/compiler/tests/org/jetbrains/jet/descriptors/serialization/AbstractDescriptorSerializationTest.java @@ -74,7 +74,9 @@ public abstract class AbstractDescriptorSerializationTest extends KotlinTestWith JavaDescriptorResolver javaDescriptorResolver = new InjectorForJavaDescriptorResolver( getProject(), new BindingTraceContext(), moduleDescriptor).getJavaDescriptorResolver(); - Collection initial = testNamespace.getMemberScope().getAllDescriptors(); + Collection initial = new ArrayList(); + initial.addAll(testNamespace.getMemberScope().getAllDescriptors()); + initial.addAll(testNamespace.getMemberScope().getObjectDescriptors()); NamespaceDescriptor deserialized = serializeAndDeserialize(javaDescriptorResolver, initial); @@ -146,7 +148,12 @@ public abstract class AbstractDescriptorSerializationTest extends KotlinTestWith FqName.topLevel(classDescriptor.getName())); ClassDescriptor descriptor = classResolver.findClass(classId); assert descriptor != null : "Class not loaded: " + classId; - namespace.getMemberScope().addClassifierDescriptor(descriptor); + if (descriptor.getKind().isObject()) { + namespace.getMemberScope().addObjectDescriptor(descriptor); + } + else { + namespace.getMemberScope().addClassifierDescriptor(descriptor); + } } ByteArrayInputStream in = new ByteArrayInputStream(serializedCallables.toByteArray()); @@ -231,6 +238,8 @@ public abstract class AbstractDescriptorSerializationTest extends KotlinTestWith //noinspection unchecked serializeClasses((Collection) classDescriptor.getUnsubstitutedInnerClassesScope().getAllDescriptors(), serializedClasses); + //noinspection unchecked + serializeClasses((Collection) classDescriptor.getUnsubstitutedInnerClassesScope().getObjectDescriptors(), serializedClasses); ClassDescriptor classObjectDescriptor = classDescriptor.getClassObjectDescriptor(); if (classObjectDescriptor != null) {