Common functionality for (de)serializing built-ons moved to a separate class

This commit is contained in:
Andrey Breslav
2013-06-03 12:45:50 +04:00
committed by Alexander Udalov
parent df57ce5a7f
commit 2446d0d003
3 changed files with 63 additions and 27 deletions
@@ -0,0 +1,56 @@
package org.jetbrains.jet.lang.types.lang;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jet.descriptors.serialization.ClassId;
import org.jetbrains.jet.descriptors.serialization.ClassSerializationUtil;
import org.jetbrains.jet.descriptors.serialization.NameTable;
import org.jetbrains.jet.lang.descriptors.ClassDescriptor;
import org.jetbrains.jet.lang.descriptors.ClassKind;
import org.jetbrains.jet.lang.descriptors.NamespaceDescriptor;
import org.jetbrains.jet.lang.resolve.DescriptorUtils;
import org.jetbrains.jet.lang.resolve.name.FqNameUnsafe;
import org.jetbrains.jet.lang.resolve.name.Name;
public class BuiltInsSerializationUtil {
public static final String BUILT_INS_DIR = "builtins";
public static final String CLASS_METADATA_FILE_EXTENSION = "kotlin_class";
public static final String PACKAGE_FILE_NAME = ".kotlin_package";
public static final Name CLASS_OBJECT_NAME = Name.identifier("object");
public static final NameTable.Namer BUILTINS_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();
}
};
@NotNull
public static String getClassMetadataPath(@NotNull ClassId classId) {
return packageFqNameToPath(classId.getPackageFqName().toUnsafe())
+ "/" + classId.getRelativeClassName().asString()
+ "." + CLASS_METADATA_FILE_EXTENSION;
}
@NotNull
public static ClassId getClassId(@NotNull ClassDescriptor classDescriptor) {
return ClassSerializationUtil.getClassId(classDescriptor, BUILTINS_NAMER);
}
@NotNull
public static String getPackageFilePath(@NotNull NamespaceDescriptor packageDescriptor) {
FqNameUnsafe fqName = DescriptorUtils.getFQName(packageDescriptor);
return packageFqNameToPath(fqName) + "/" + PACKAGE_FILE_NAME;
}
private static String packageFqNameToPath(FqNameUnsafe fqName) {
return fqName.asString().replace('.', '/');
}
}
@@ -68,7 +68,7 @@ public class KotlinBuiltIns {
public static final JetScope STUB = JetScope.EMPTY;
public static final String BUILT_INS_DIR = "jet";
private static final String BUILT_INS_PACKAGE_NAME_STRING = "jet";
public static final String BUILT_INS_PACKAGE_NAME_STRING = "jet";
private static final Name BUILT_INS_PACKAGE_NAME = Name.identifier(BUILT_INS_PACKAGE_NAME_STRING);
public static final FqName BUILT_INS_PACKAGE_FQ_NAME = FqName.topLevel(BUILT_INS_PACKAGE_NAME);