Do not load built-ins in old format, drop class_name extension

This commit is contained in:
Alexander Udalov
2016-01-13 16:19:07 +03:00
parent 625c46d568
commit 4bd1d064bb
7 changed files with 65 additions and 118 deletions
@@ -18,8 +18,6 @@ package org.jetbrains.kotlin.builtins
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.serialization.ProtoBuf
import org.jetbrains.kotlin.serialization.builtins.BuiltInsProtoBuf
import org.jetbrains.kotlin.serialization.deserialization.DeserializedPackageFragment
import org.jetbrains.kotlin.serialization.deserialization.NameResolverImpl
@@ -34,7 +32,8 @@ class BuiltinsPackageFragment(
module: ModuleDescriptor,
loadResource: (path: String) -> InputStream?
) : DeserializedPackageFragment(fqName, storageManager, module, BuiltInsSerializedResourcePaths, loadResource) {
val builtinsMessage = loadResource(BuiltInsSerializedResourcePaths.getBuiltInsFilePath(fqName))?.let { stream ->
private val builtinsMessage = run {
val stream = loadResourceSure(BuiltInsSerializedResourcePaths.getBuiltInsFilePath(fqName))
val dataInput = DataInputStream(stream)
val version = BuiltInsBinaryVersion(*(1..dataInput.readInt()).map { dataInput.readInt() }.toIntArray())
@@ -50,24 +49,16 @@ class BuiltinsPackageFragment(
BuiltInsProtoBuf.BuiltIns.parseFrom(stream, BuiltInsSerializedResourcePaths.extensionRegistry)
}
override val nameResolver =
builtinsMessage?.let { NameResolverImpl(it.strings, it.qualifiedNames) }
?: NameResolverImpl.read(loadResourceSure(serializedResourcePaths.getStringTableFilePath(fqName)))
override val nameResolver = NameResolverImpl(builtinsMessage.strings, builtinsMessage.qualifiedNames)
override val classIdToProto = builtinsMessage?.let { builtins ->
builtins.classList.toMapBy { klass ->
nameResolver.getClassId(klass.fqName)
}
}
override val classIdToProto =
builtinsMessage.classList.toMapBy { klass ->
nameResolver.getClassId(klass.fqName)
}
override fun computeMemberScope() = builtinsMessage?.let { builtins ->
DeserializedPackageMemberScope(
this, builtins.`package`, nameResolver, packagePartSource = null, components = components,
classNames = { classIdToProto!!.keys.filter { classId -> !classId.isNestedClass }.map { it.shortClassName } }
)
} ?: super.computeMemberScope()
override fun loadClassNames(packageProto: ProtoBuf.Package): Collection<Name> {
return packageProto.getExtension(BuiltInsProtoBuf.className)?.map { id -> nameResolver.getName(id) } ?: listOf()
}
override fun computeMemberScope() =
DeserializedPackageMemberScope(
this, builtinsMessage.`package`, nameResolver, packagePartSource = null, components = components,
classNames = { classIdToProto.keys.filter { classId -> !classId.isNestedClass }.map { it.shortClassName } }
)
}
-2
View File
@@ -31,8 +31,6 @@ message BuiltIns {
}
extend Package {
// id in StringTable
repeated int32 class_name = 150 [packed = true];
optional int32 package_fq_name = 151;
}
@@ -7,7 +7,6 @@ public final class BuiltInsProtoBuf {
private BuiltInsProtoBuf() {}
public static void registerAllExtensions(
com.google.protobuf.ExtensionRegistryLite registry) {
registry.add(org.jetbrains.kotlin.serialization.builtins.BuiltInsProtoBuf.className);
registry.add(org.jetbrains.kotlin.serialization.builtins.BuiltInsProtoBuf.packageFqName);
registry.add(org.jetbrains.kotlin.serialization.builtins.BuiltInsProtoBuf.classAnnotation);
registry.add(org.jetbrains.kotlin.serialization.builtins.BuiltInsProtoBuf.constructorAnnotation);
@@ -870,21 +869,6 @@ public final class BuiltInsProtoBuf {
// @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.serialization.builtins.BuiltIns)
}
public static final int CLASS_NAME_FIELD_NUMBER = 150;
/**
* <code>extend .org.jetbrains.kotlin.serialization.Package { ... }</code>
*/
public static final
com.google.protobuf.GeneratedMessageLite.GeneratedExtension<
org.jetbrains.kotlin.serialization.ProtoBuf.Package,
java.util.List<java.lang.Integer>> className = com.google.protobuf.GeneratedMessageLite
.newRepeatedGeneratedExtension(
org.jetbrains.kotlin.serialization.ProtoBuf.Package.getDefaultInstance(),
null,
null,
150,
com.google.protobuf.WireFormat.FieldType.INT32,
true);
public static final int PACKAGE_FQ_NAME_FIELD_NUMBER = 151;
/**
* <code>extend .org.jetbrains.kotlin.serialization.Package { ... }</code>
@@ -49,14 +49,7 @@ abstract class DeserializedPackageFragment(
computeMemberScope()
}
protected open fun computeMemberScope(): DeserializedPackageMemberScope {
val packageStream = loadResourceSure(serializedResourcePaths.getPackageFilePath(fqName))
val packageProto = ProtoBuf.Package.parseFrom(packageStream, serializedResourcePaths.extensionRegistry)
return DeserializedPackageMemberScope(
this, packageProto, nameResolver, packagePartSource = null, components = components,
classNames = { loadClassNames(packageProto) }
)
}
protected abstract fun computeMemberScope(): DeserializedPackageMemberScope
override fun getMemberScope() = deserializedMemberScope
@@ -64,8 +57,6 @@ abstract class DeserializedPackageFragment(
return name in getMemberScope().classNames
}
protected abstract fun loadClassNames(packageProto: ProtoBuf.Package): Collection<Name>
protected fun loadResourceSure(path: String): InputStream =
loadResource(path) ?: throw IllegalStateException("Resource not found in classpath: $path")
}