Simplify class object naming madness

- get rid of DescriptorNamer, always use descriptor.getName() instead
- delete AbstractClassResolver.getClassObjectName(), always use
  "<class-object-for-...>", except for the case of built-ins serialization
  (class object names should be replaced by "object" when writing files with
  serialized data for built-ins)
- delete NestedClassResolver.resolveClassObject(), always use the other method
  of this class instead
This commit is contained in:
Alexander Udalov
2013-07-01 19:26:38 +04:00
parent 5db2ecd1fc
commit f9ad6827d4
190 changed files with 103 additions and 215 deletions
@@ -37,7 +37,6 @@ import org.jetbrains.jet.lang.resolve.DescriptorUtils;
import org.jetbrains.jet.lang.resolve.java.JavaBridgeConfiguration;
import org.jetbrains.jet.lang.resolve.java.JavaDescriptorResolver;
import org.jetbrains.jet.lang.resolve.java.JavaToKotlinClassMap;
import org.jetbrains.jet.lang.resolve.java.JvmAbi;
import org.jetbrains.jet.lang.resolve.java.resolver.DeserializedDescriptorResolver;
import org.jetbrains.jet.lang.resolve.lazy.KotlinTestWithEnvironment;
import org.jetbrains.jet.lang.resolve.lazy.LazyResolveTestUtil;
@@ -61,22 +60,6 @@ import static org.jetbrains.jet.descriptors.serialization.descriptors.Annotation
public abstract class AbstractDescriptorSerializationTest extends KotlinTestWithEnvironment {
public static final Name TEST_PACKAGE_NAME = Name.identifier("test");
public static final DescriptorNamer JAVA_NAMER = new DescriptorNamer() {
@NotNull
@Override
public Name getClassName(@NotNull ClassDescriptor classDescriptor) {
if (classDescriptor.getKind() == ClassKind.CLASS_OBJECT) {
return Name.identifier(JvmAbi.CLASS_OBJECT_CLASS_NAME);
}
return classDescriptor.getName();
}
@NotNull
@Override
public Name getPackageName(@NotNull NamespaceDescriptor namespaceDescriptor) {
return namespaceDescriptor.getName();
}
};
@Override
protected JetCoreEnvironment createEnvironment() {
@@ -221,19 +204,11 @@ public abstract class AbstractDescriptorSerializationTest extends KotlinTestWith
builder.append(".");
}
builder.append(getNaiveName(descriptor));
builder.append(descriptor.getName().asString());
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().asString();
}
private static NamespaceDescriptorImpl createTestNamespace() {
ModuleDescriptorImpl module = new ModuleDescriptorImpl(Name.special("<name>"), JavaBridgeConfiguration.ALL_JAVA_IMPORTS,
JavaToKotlinClassMap.getInstance());
@@ -253,7 +228,7 @@ public abstract class AbstractDescriptorSerializationTest extends KotlinTestWith
serializeClasses(classes, serializedClasses);
DescriptorSerializer descriptorSerializer = new DescriptorSerializer(JAVA_NAMER);
DescriptorSerializer descriptorSerializer = new DescriptorSerializer();
List<MessageLite> messages = Lists.newArrayList();
for (CallableMemberDescriptor callable : callables) {
messages.add(descriptorSerializer.callableProto(callable).build());
@@ -268,7 +243,7 @@ public abstract class AbstractDescriptorSerializationTest extends KotlinTestWith
private static void serializeClasses(Collection<ClassDescriptor> classes, Map<ClassDescriptor, byte[]> serializedClasses) throws IOException {
for (ClassDescriptor classDescriptor : classes) {
DescriptorSerializer descriptorSerializer = new DescriptorSerializer(JAVA_NAMER);
DescriptorSerializer descriptorSerializer = new DescriptorSerializer();
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
ProtoBuf.Class classProto = descriptorSerializer.classProto(classDescriptor).build();
@@ -355,12 +330,6 @@ public abstract class AbstractDescriptorSerializationTest extends KotlinTestWith
public ClassDescriptor resolveNestedClass(@NotNull ClassDescriptor outerClass, @NotNull Name name) {
return findClass(classId.createNestedClassId(name));
}
@Nullable
@Override
public ClassDescriptor resolveClassObject(@NotNull ClassDescriptor outerClass) {
return findClass(classId.createNestedClassId(Name.identifier(JvmAbi.CLASS_OBJECT_CLASS_NAME)));
}
};
NameResolver nameResolver = new NameResolver(classMetadata.simpleNames, classMetadata.qualifiedNames);
@@ -32,9 +32,7 @@ import org.jetbrains.jet.lang.resolve.DescriptorUtils;
import org.jetbrains.jet.lang.resolve.lazy.KotlinTestWithEnvironment;
import org.jetbrains.jet.lang.resolve.lazy.storage.LockBasedStorageManager;
import org.jetbrains.jet.lang.resolve.name.FqName;
import org.jetbrains.jet.lang.resolve.name.Name;
import org.jetbrains.jet.lang.resolve.scopes.WritableScope;
import org.jetbrains.jet.lang.types.lang.BuiltInsSerializationUtil;
import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns;
import org.jetbrains.jet.renderer.DescriptorRenderer;
import org.jetbrains.jet.renderer.DescriptorRendererBuilder;
@@ -71,7 +69,7 @@ public class BuiltinsDeserializationTest extends KotlinTestWithEnvironment {
}
private static NamespaceDescriptorImpl getDeserializedDescriptorsAsNamespace(Collection<DeclarationDescriptor> allDescriptors) {
DescriptorSerializer serializer = new DescriptorSerializer(BuiltInsSerializationUtil.BUILTINS_NAMER);
DescriptorSerializer serializer = new DescriptorSerializer();
final Map<ClassId, ProtoBuf.Class> classProtos = serializeClasses(serializer, allDescriptors);
@@ -97,12 +95,6 @@ public class BuiltinsDeserializationTest extends KotlinTestWithEnvironment {
return BuiltinsDeserializationTest.getClassId(classDescriptor);
}
@NotNull
@Override
protected Name getClassObjectName(@NotNull ClassDescriptor outerClass) {
return BuiltInsSerializationUtil.CLASS_OBJECT_NAME;
}
@Nullable
@Override
protected ClassData getClassData(@NotNull ClassId classId) {
@@ -196,6 +188,6 @@ public class BuiltinsDeserializationTest extends KotlinTestWithEnvironment {
}
private static ClassId getClassId(ClassDescriptor classDescriptor) {
return ClassSerializationUtil.getClassId(classDescriptor, BuiltInsSerializationUtil.BUILTINS_NAMER);
return ClassSerializationUtil.getClassId(classDescriptor);
}
}
@@ -29,7 +29,6 @@ import org.jetbrains.jet.lang.descriptors.impl.NamespaceDescriptorImpl;
import org.jetbrains.jet.lang.resolve.lazy.storage.LockBasedStorageManager;
import org.jetbrains.jet.lang.resolve.name.FqName;
import org.jetbrains.jet.lang.resolve.name.FqNameUnsafe;
import org.jetbrains.jet.lang.resolve.name.Name;
import java.io.IOException;
@@ -91,13 +90,7 @@ public class WriteSerializedInfoTest extends CodegenTestCase {
@NotNull
@Override
protected ClassId getClassId(@NotNull ClassDescriptor classDescriptor) {
return ClassSerializationUtil.getClassId(classDescriptor, DescriptorNamer.DEFAULT);
}
@NotNull
@Override
protected Name getClassObjectName(@NotNull ClassDescriptor outerClass) {
return Name.special("<class object>");
return ClassSerializationUtil.getClassId(classDescriptor);
}
@Override