Split serialized package fragments metadata (#2051)
This commit is contained in:
committed by
Nikolay Igotti
parent
7c21913990
commit
c40396bf19
+3
-2
@@ -18,8 +18,9 @@ class KonanClassDataFinder(
|
||||
val nameList = proto.classNameList
|
||||
|
||||
val index = nameList.indexOfFirst { nameResolver.getClassId(it) == classId }
|
||||
if (index == -1)
|
||||
error("Could not find serialized class $classId")
|
||||
if (index == -1) {
|
||||
return null
|
||||
}
|
||||
|
||||
val foundClass = proto.getClasses(index) ?: error("Could not find data for serialized class $classId")
|
||||
|
||||
|
||||
+3
-2
@@ -19,7 +19,8 @@ class KonanPackageFragment(
|
||||
private val library: KonanLibrary,
|
||||
private val packageAccessedHandler: PackageAccessedHandler?,
|
||||
storageManager: StorageManager,
|
||||
module: ModuleDescriptor
|
||||
module: ModuleDescriptor,
|
||||
partName: String
|
||||
) : DeserializedPackageFragment(fqName, storageManager, module) {
|
||||
|
||||
lateinit var components: DeserializationComponents
|
||||
@@ -31,7 +32,7 @@ class KonanPackageFragment(
|
||||
// The proto field is lazy so that we can load only needed
|
||||
// packages from the library.
|
||||
private val protoForNames: KonanProtoBuf.LinkDataPackageFragment by lazy {
|
||||
parsePackageFragment(library.packageMetadata(fqName.asString()))
|
||||
parsePackageFragment(library.packageMetadata(fqName.asString(), partName))
|
||||
}
|
||||
|
||||
val proto: KonanProtoBuf.LinkDataPackageFragment
|
||||
|
||||
+6
-2
@@ -29,8 +29,12 @@ internal object KonanDeserializedPackageFragmentsFactoryImpl: KonanDeserializedP
|
||||
moduleDescriptor: ModuleDescriptor,
|
||||
packageAccessedHandler: PackageAccessedHandler?,
|
||||
storageManager: StorageManager
|
||||
) = packageFragmentNames.map {
|
||||
KonanPackageFragment(FqName(it), library, packageAccessedHandler, storageManager, moduleDescriptor)
|
||||
) = packageFragmentNames.flatMap {
|
||||
val fqName = FqName(it)
|
||||
val parts = library.packageMetadataParts(fqName.asString())
|
||||
parts.map { partName ->
|
||||
KonanPackageFragment(fqName, library, packageAccessedHandler, storageManager, moduleDescriptor, partName)
|
||||
}
|
||||
}
|
||||
|
||||
override fun createSyntheticPackageFragments(
|
||||
|
||||
Reference in New Issue
Block a user