Avoid retaining reference to ProtoBuf.Package in JvmPackagePartSource

Otherwise, 2e933a165a doesn't help
This commit is contained in:
Denis Zharkov
2018-03-15 14:38:37 +03:00
parent 4b78abaa7a
commit c334f46825
2 changed files with 10 additions and 7 deletions
@@ -28,11 +28,7 @@ fun getJvmModuleNameForDeserializedDescriptor(descriptor: DeclarationDescriptor)
descriptor is DeserializedMemberDescriptor -> { descriptor is DeserializedMemberDescriptor -> {
val source = descriptor.containerSource val source = descriptor.containerSource
if (source is JvmPackagePartSource) { if (source is JvmPackagePartSource) {
val packageProto = source.packageProto return source.moduleName
val nameResolver = source.nameResolver
return packageProto.getExtensionOrNull(JvmProtoBuf.packageModuleName)
?.let(nameResolver::getString)
?: JvmAbi.DEFAULT_MODULE_NAME
} }
} }
} }
@@ -17,8 +17,11 @@
package org.jetbrains.kotlin.load.kotlin package org.jetbrains.kotlin.load.kotlin
import org.jetbrains.kotlin.descriptors.SourceFile import org.jetbrains.kotlin.descriptors.SourceFile
import org.jetbrains.kotlin.load.java.JvmAbi
import org.jetbrains.kotlin.metadata.ProtoBuf import org.jetbrains.kotlin.metadata.ProtoBuf
import org.jetbrains.kotlin.metadata.deserialization.NameResolver import org.jetbrains.kotlin.metadata.deserialization.NameResolver
import org.jetbrains.kotlin.metadata.deserialization.getExtensionOrNull
import org.jetbrains.kotlin.metadata.jvm.JvmProtoBuf
import org.jetbrains.kotlin.name.ClassId import org.jetbrains.kotlin.name.ClassId
import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.resolve.jvm.JvmClassName import org.jetbrains.kotlin.resolve.jvm.JvmClassName
@@ -28,8 +31,8 @@ import org.jetbrains.kotlin.serialization.deserialization.descriptors.Deserializ
class JvmPackagePartSource( class JvmPackagePartSource(
val className: JvmClassName, val className: JvmClassName,
val facadeClassName: JvmClassName?, val facadeClassName: JvmClassName?,
val packageProto: ProtoBuf.Package, packageProto: ProtoBuf.Package,
val nameResolver: NameResolver, nameResolver: NameResolver,
override val incompatibility: IncompatibleVersionErrorData<JvmMetadataVersion>? = null, override val incompatibility: IncompatibleVersionErrorData<JvmMetadataVersion>? = null,
override val isPreReleaseInvisible: Boolean = false, override val isPreReleaseInvisible: Boolean = false,
val knownJvmBinaryClass: KotlinJvmBinaryClass? = null val knownJvmBinaryClass: KotlinJvmBinaryClass? = null
@@ -52,6 +55,10 @@ class JvmPackagePartSource(
kotlinClass kotlinClass
) )
val moduleName =
packageProto.getExtensionOrNull(JvmProtoBuf.packageModuleName)?.let(nameResolver::getString)
?: JvmAbi.DEFAULT_MODULE_NAME
override val presentableString: String override val presentableString: String
get() = "Class '${classId.asSingleFqName().asString()}'" get() = "Class '${classId.asSingleFqName().asString()}'"