Proper names for class objects upon serialization of built-ins

This commit is contained in:
Andrey Breslav
2013-06-13 13:51:30 +04:00
committed by Alexander Udalov
parent 3ebd7d4e1d
commit 5492c8875e
177 changed files with 58 additions and 55 deletions
@@ -51,6 +51,19 @@ import static org.jetbrains.jet.descriptors.serialization.ClassSerializationUtil
public class BuiltinsDeserializationTest extends KotlinTestWithEnvironment {
private static final Name CLASS_OBJECT_NAME = Name.special("<class object>");
private static final NameTable.Namer NAMER = new NameTable.Namer() {
@NotNull
@Override
public Name getClassName(@NotNull ClassDescriptor classDescriptor) {
return classDescriptor.getKind() == ClassKind.CLASS_OBJECT ? CLASS_OBJECT_NAME : classDescriptor.getName();
}
@NotNull
@Override
public Name getPackageName(@NotNull NamespaceDescriptor namespaceDescriptor) {
return namespaceDescriptor.getName();
}
};
@Override
protected JetCoreEnvironment createEnvironment() {
@@ -75,7 +88,7 @@ public class BuiltinsDeserializationTest extends KotlinTestWithEnvironment {
}
private static NamespaceDescriptorImpl getDeserializedDescriptorsAsNamespace(Collection<DeclarationDescriptor> allDescriptors) {
DescriptorSerializer serializer = new DescriptorSerializer(NameTable.Namer.DEFAULT);
DescriptorSerializer serializer = new DescriptorSerializer(NAMER);
final Map<ClassId, ProtoBuf.Class> classProtos = serializeClasses(serializer, allDescriptors);
@@ -109,7 +122,9 @@ public class BuiltinsDeserializationTest extends KotlinTestWithEnvironment {
@Nullable
@Override
protected ClassData getClassData(@NotNull ClassId classId) {
return new ClassData(nameResolver, classProtos.get(classId));
ProtoBuf.Class classProto = classProtos.get(classId);
assert classProto != null : "Class not found: " + classId;
return new ClassData(nameResolver, classProto);
}
@Override
@@ -197,19 +212,7 @@ public class BuiltinsDeserializationTest extends KotlinTestWithEnvironment {
}
private static ClassId getClassId(ClassDescriptor classDescriptor) {
return ClassSerializationUtil.getClassId(classDescriptor, new NameTable.Namer() {
@NotNull
@Override
public Name getClassName(@NotNull ClassDescriptor classDescriptor) {
return classDescriptor.getKind() == ClassKind.CLASS_OBJECT ? CLASS_OBJECT_NAME : classDescriptor.getName();
}
@NotNull
@Override
public Name getPackageName(@NotNull NamespaceDescriptor namespaceDescriptor) {
return namespaceDescriptor.getName();
}
});
return ClassSerializationUtil.getClassId(classDescriptor, NAMER);
}
private static NamespaceDescriptorImpl createTestNamespace(String testPackageName) {