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 -> {
val source = descriptor.containerSource
if (source is JvmPackagePartSource) {
val packageProto = source.packageProto
val nameResolver = source.nameResolver
return packageProto.getExtensionOrNull(JvmProtoBuf.packageModuleName)
?.let(nameResolver::getString)
?: JvmAbi.DEFAULT_MODULE_NAME
return source.moduleName
}
}
}
@@ -17,8 +17,11 @@
package org.jetbrains.kotlin.load.kotlin
import org.jetbrains.kotlin.descriptors.SourceFile
import org.jetbrains.kotlin.load.java.JvmAbi
import org.jetbrains.kotlin.metadata.ProtoBuf
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.Name
import org.jetbrains.kotlin.resolve.jvm.JvmClassName
@@ -28,8 +31,8 @@ import org.jetbrains.kotlin.serialization.deserialization.descriptors.Deserializ
class JvmPackagePartSource(
val className: JvmClassName,
val facadeClassName: JvmClassName?,
val packageProto: ProtoBuf.Package,
val nameResolver: NameResolver,
packageProto: ProtoBuf.Package,
nameResolver: NameResolver,
override val incompatibility: IncompatibleVersionErrorData<JvmMetadataVersion>? = null,
override val isPreReleaseInvisible: Boolean = false,
val knownJvmBinaryClass: KotlinJvmBinaryClass? = null
@@ -52,6 +55,10 @@ class JvmPackagePartSource(
kotlinClass
)
val moduleName =
packageProto.getExtensionOrNull(JvmProtoBuf.packageModuleName)?.let(nameResolver::getString)
?: JvmAbi.DEFAULT_MODULE_NAME
override val presentableString: String
get() = "Class '${classId.asSingleFqName().asString()}'"