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,
|
resolvedLibrary: KotlinResolvedLibrary,
|
||||||
packageFqName: FqName
|
packageFqName: FqName
|
||||||
) = KlibDeserializedContainerSource(
|
) = KlibDeserializedContainerSource(
|
||||||
|
resolvedLibrary.library,
|
||||||
moduleHeaders[resolvedLibrary]!!,
|
moduleHeaders[resolvedLibrary]!!,
|
||||||
deserializationConfiguration,
|
deserializationConfiguration,
|
||||||
packageFqName
|
packageFqName
|
||||||
|
|||||||
+15
-3
@@ -6,6 +6,8 @@
|
|||||||
package org.jetbrains.kotlin.library.metadata
|
package org.jetbrains.kotlin.library.metadata
|
||||||
|
|
||||||
import org.jetbrains.kotlin.descriptors.SourceFile
|
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.library.metadata.KlibMetadataProtoBuf.Header
|
||||||
import org.jetbrains.kotlin.name.FqName
|
import org.jetbrains.kotlin.name.FqName
|
||||||
import org.jetbrains.kotlin.serialization.deserialization.DeserializationConfiguration
|
import org.jetbrains.kotlin.serialization.deserialization.DeserializationConfiguration
|
||||||
@@ -15,13 +17,20 @@ import org.jetbrains.kotlin.serialization.deserialization.descriptors.Deserializ
|
|||||||
|
|
||||||
class KlibDeserializedContainerSource private constructor(
|
class KlibDeserializedContainerSource private constructor(
|
||||||
override val isPreReleaseInvisible: Boolean,
|
override val isPreReleaseInvisible: Boolean,
|
||||||
override val presentableString: String
|
override val presentableString: String,
|
||||||
|
val isFromNativeInteropLibrary: Boolean
|
||||||
) : DeserializedContainerSource {
|
) : DeserializedContainerSource {
|
||||||
|
|
||||||
constructor(header: Header, configuration: DeserializationConfiguration, packageFqName: FqName) : this(
|
constructor(
|
||||||
|
library: KotlinLibrary,
|
||||||
|
header: Header,
|
||||||
|
configuration: DeserializationConfiguration,
|
||||||
|
packageFqName: FqName
|
||||||
|
) : this(
|
||||||
configuration.reportErrorsOnPreReleaseDependencies &&
|
configuration.reportErrorsOnPreReleaseDependencies &&
|
||||||
(header.flags and KlibMetadataHeaderFlags.PRE_RELEASE) != 0,
|
(header.flags and KlibMetadataHeaderFlags.PRE_RELEASE) != 0,
|
||||||
"Package '$packageFqName'"
|
"Package '$packageFqName'",
|
||||||
|
library.isInteropLibrary()
|
||||||
)
|
)
|
||||||
|
|
||||||
override val incompatibility: IncompatibleVersionErrorData<*>?
|
override val incompatibility: IncompatibleVersionErrorData<*>?
|
||||||
@@ -33,3 +42,6 @@ class KlibDeserializedContainerSource private constructor(
|
|||||||
// TODO: move [CallableMemberDescriptor.findSourceFile] here.
|
// TODO: move [CallableMemberDescriptor.findSourceFile] here.
|
||||||
override fun getContainingFile(): SourceFile = SourceFile.NO_SOURCE_FILE
|
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 {
|
return packageFragmentNames.flatMap {
|
||||||
val fqName = FqName(it)
|
val fqName = FqName(it)
|
||||||
val containerSource = KlibDeserializedContainerSource(libraryHeader, configuration, fqName)
|
val containerSource = KlibDeserializedContainerSource(library, libraryHeader, configuration, fqName)
|
||||||
val parts = library.packageMetadataParts(fqName.asString())
|
val parts = library.packageMetadataParts(fqName.asString())
|
||||||
val isBuiltInModule = moduleDescriptor.builtIns.builtInsModule === moduleDescriptor
|
val isBuiltInModule = moduleDescriptor.builtIns.builtInsModule === moduleDescriptor
|
||||||
parts.map { partName ->
|
parts.map { partName ->
|
||||||
|
|||||||
Reference in New Issue
Block a user