K2: add KlibDeserializedContainerSource.isFromNativeInteropLibrary
This will be required when serializing IR symbols referring declarations from interop libraries.
This commit is contained in:
committed by
Space Team
parent
6877b2fc55
commit
b1e3226ed5
+1
@@ -145,6 +145,7 @@ class KlibBasedSymbolProvider(
|
||||
resolvedLibrary: KotlinResolvedLibrary,
|
||||
packageFqName: FqName
|
||||
) = KlibDeserializedContainerSource(
|
||||
resolvedLibrary.library,
|
||||
moduleHeaders[resolvedLibrary]!!,
|
||||
deserializationConfiguration,
|
||||
packageFqName
|
||||
|
||||
+15
-3
@@ -6,6 +6,8 @@
|
||||
package org.jetbrains.kotlin.library.metadata
|
||||
|
||||
import org.jetbrains.kotlin.descriptors.SourceFile
|
||||
import org.jetbrains.kotlin.konan.library.KLIB_INTEROP_IR_PROVIDER_IDENTIFIER
|
||||
import org.jetbrains.kotlin.library.KotlinLibrary
|
||||
import org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.Header
|
||||
import org.jetbrains.kotlin.name.FqName
|
||||
import org.jetbrains.kotlin.serialization.deserialization.DeserializationConfiguration
|
||||
@@ -15,13 +17,20 @@ import org.jetbrains.kotlin.serialization.deserialization.descriptors.Deserializ
|
||||
|
||||
class KlibDeserializedContainerSource private constructor(
|
||||
override val isPreReleaseInvisible: Boolean,
|
||||
override val presentableString: String
|
||||
override val presentableString: String,
|
||||
val isFromNativeInteropLibrary: Boolean
|
||||
) : DeserializedContainerSource {
|
||||
|
||||
constructor(header: Header, configuration: DeserializationConfiguration, packageFqName: FqName) : this(
|
||||
constructor(
|
||||
library: KotlinLibrary,
|
||||
header: Header,
|
||||
configuration: DeserializationConfiguration,
|
||||
packageFqName: FqName
|
||||
) : this(
|
||||
configuration.reportErrorsOnPreReleaseDependencies &&
|
||||
(header.flags and KlibMetadataHeaderFlags.PRE_RELEASE) != 0,
|
||||
"Package '$packageFqName'"
|
||||
"Package '$packageFqName'",
|
||||
library.isInteropLibrary()
|
||||
)
|
||||
|
||||
override val incompatibility: IncompatibleVersionErrorData<*>?
|
||||
@@ -33,3 +42,6 @@ class KlibDeserializedContainerSource private constructor(
|
||||
// TODO: move [CallableMemberDescriptor.findSourceFile] here.
|
||||
override fun getContainingFile(): SourceFile = SourceFile.NO_SOURCE_FILE
|
||||
}
|
||||
|
||||
private fun KotlinLibrary.isInteropLibrary() =
|
||||
manifestProperties["ir_provider"] == KLIB_INTEROP_IR_PROVIDER_IDENTIFIER
|
||||
|
||||
+1
-1
@@ -33,7 +33,7 @@ open class KlibMetadataDeserializedPackageFragmentsFactoryImpl : KlibMetadataDes
|
||||
|
||||
return packageFragmentNames.flatMap {
|
||||
val fqName = FqName(it)
|
||||
val containerSource = KlibDeserializedContainerSource(libraryHeader, configuration, fqName)
|
||||
val containerSource = KlibDeserializedContainerSource(library, libraryHeader, configuration, fqName)
|
||||
val parts = library.packageMetadataParts(fqName.asString())
|
||||
val isBuiltInModule = moduleDescriptor.builtIns.builtInsModule === moduleDescriptor
|
||||
parts.map { partName ->
|
||||
|
||||
Reference in New Issue
Block a user