Add packageProto/nameResolver to JvmPackagePartSource
May be useful for loading platform-specific protobuf extensions (such as package_module_name on JVM) when analyzing deserialized top level members
This commit is contained in:
+3
-1
@@ -61,7 +61,9 @@ class DeserializedDescriptorResolver {
|
||||
val (nameResolver, packageProto) = parseProto(kotlinClass) {
|
||||
JvmProtoBufUtil.readPackageDataFrom(data, strings)
|
||||
} ?: return null
|
||||
val source = JvmPackagePartSource(kotlinClass, kotlinClass.incompatibility, kotlinClass.isPreReleaseInvisible)
|
||||
val source = JvmPackagePartSource(
|
||||
kotlinClass, packageProto, nameResolver, kotlinClass.incompatibility, kotlinClass.isPreReleaseInvisible
|
||||
)
|
||||
return DeserializedPackageMemberScope(descriptor, packageProto, nameResolver, source, components) {
|
||||
// All classes are included into Java scope
|
||||
emptyList()
|
||||
|
||||
@@ -20,18 +20,24 @@ import org.jetbrains.kotlin.descriptors.SourceFile
|
||||
import org.jetbrains.kotlin.name.ClassId
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
import org.jetbrains.kotlin.resolve.jvm.JvmClassName
|
||||
import org.jetbrains.kotlin.serialization.ProtoBuf
|
||||
import org.jetbrains.kotlin.serialization.deserialization.IncompatibleVersionErrorData
|
||||
import org.jetbrains.kotlin.serialization.deserialization.NameResolver
|
||||
import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedContainerSource
|
||||
|
||||
class JvmPackagePartSource(
|
||||
val className: JvmClassName,
|
||||
val facadeClassName: JvmClassName?,
|
||||
val packageProto: ProtoBuf.Package,
|
||||
val nameResolver: NameResolver,
|
||||
override val incompatibility: IncompatibleVersionErrorData<JvmMetadataVersion>? = null,
|
||||
override val isPreReleaseInvisible: Boolean = false,
|
||||
val knownJvmBinaryClass: KotlinJvmBinaryClass? = null
|
||||
) : DeserializedContainerSource {
|
||||
constructor(
|
||||
kotlinClass: KotlinJvmBinaryClass,
|
||||
packageProto: ProtoBuf.Package,
|
||||
nameResolver: NameResolver,
|
||||
incompatibility: IncompatibleVersionErrorData<JvmMetadataVersion>? = null,
|
||||
isPreReleaseInvisible: Boolean = false
|
||||
) : this(
|
||||
@@ -39,6 +45,8 @@ class JvmPackagePartSource(
|
||||
kotlinClass.classHeader.multifileClassName?.let {
|
||||
if (it.isNotEmpty()) JvmClassName.byInternalName(it) else null
|
||||
},
|
||||
packageProto,
|
||||
nameResolver,
|
||||
incompatibility,
|
||||
isPreReleaseInvisible,
|
||||
kotlinClass
|
||||
|
||||
Reference in New Issue
Block a user