Add BinaryVersion to DeserializationContext

This will be useful to implement version-dependent deserialization,
which is needed for gradual fixes of issues in metadata

 #KT-25120 In Progress
This commit is contained in:
Alexander Udalov
2018-07-11 19:14:21 +02:00
parent 1e9694f1db
commit 4122021090
40 changed files with 201 additions and 93 deletions
@@ -51,6 +51,6 @@ class JvmBuiltInsPackageFragmentProvider(
override fun findPackage(fqName: FqName): DeserializedPackageFragment? =
finder.findBuiltInsData(fqName)?.let { inputStream ->
BuiltInsPackageFragmentImpl(fqName, storageManager, moduleDescriptor, inputStream)
BuiltInsPackageFragmentImpl.create(fqName, storageManager, moduleDescriptor, inputStream)
}
}
@@ -53,7 +53,7 @@ class DeserializedDescriptorResolver {
JvmProtoBufUtil.readClassDataFrom(data, strings)
} ?: return null
val source = KotlinJvmBinarySourceElement(kotlinClass, kotlinClass.incompatibility, kotlinClass.isPreReleaseInvisible)
return ClassData(nameResolver, classProto, source)
return ClassData(nameResolver, classProto, kotlinClass.classHeader.metadataVersion, source)
}
fun createKotlinPackagePartScope(descriptor: PackageFragmentDescriptor, kotlinClass: KotlinJvmBinaryClass): MemberScope? {
@@ -65,7 +65,9 @@ class DeserializedDescriptorResolver {
val source = JvmPackagePartSource(
kotlinClass, packageProto, nameResolver, kotlinClass.incompatibility, kotlinClass.isPreReleaseInvisible
)
return DeserializedPackageMemberScope(descriptor, packageProto, nameResolver, source, components) {
return DeserializedPackageMemberScope(
descriptor, packageProto, nameResolver, kotlinClass.classHeader.metadataVersion, source, components
) {
// All classes are included into Java scope
emptyList()
}