diff --git a/compiler/frontend.java/src/org/jetbrains/kotlin/load/kotlin/incremental/IncrementalPackageFragmentProvider.kt b/compiler/frontend.java/src/org/jetbrains/kotlin/load/kotlin/incremental/IncrementalPackageFragmentProvider.kt index bd8f241bc31..7855b537597 100644 --- a/compiler/frontend.java/src/org/jetbrains/kotlin/load/kotlin/incremental/IncrementalPackageFragmentProvider.kt +++ b/compiler/frontend.java/src/org/jetbrains/kotlin/load/kotlin/incremental/IncrementalPackageFragmentProvider.kt @@ -90,7 +90,9 @@ class IncrementalPackageFragmentProvider( DeserializedPackageMemberScope( this, packageProto, nameResolver, - JvmPackagePartSource(partName, facadeName, knownJvmBinaryClass = jvmBinaryClass), + JvmPackagePartSource( + partName, facadeName, packageProto, nameResolver, knownJvmBinaryClass = jvmBinaryClass + ), deserializationComponents, classNames = { emptyList() } ) } diff --git a/core/descriptors.jvm/src/org/jetbrains/kotlin/load/kotlin/DeserializedDescriptorResolver.kt b/core/descriptors.jvm/src/org/jetbrains/kotlin/load/kotlin/DeserializedDescriptorResolver.kt index 274509c740b..84db9dbaf7e 100644 --- a/core/descriptors.jvm/src/org/jetbrains/kotlin/load/kotlin/DeserializedDescriptorResolver.kt +++ b/core/descriptors.jvm/src/org/jetbrains/kotlin/load/kotlin/DeserializedDescriptorResolver.kt @@ -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() diff --git a/core/descriptors.jvm/src/org/jetbrains/kotlin/load/kotlin/JvmPackagePartSource.kt b/core/descriptors.jvm/src/org/jetbrains/kotlin/load/kotlin/JvmPackagePartSource.kt index 3747bad2f2e..29e209b608a 100644 --- a/core/descriptors.jvm/src/org/jetbrains/kotlin/load/kotlin/JvmPackagePartSource.kt +++ b/core/descriptors.jvm/src/org/jetbrains/kotlin/load/kotlin/JvmPackagePartSource.kt @@ -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? = null, override val isPreReleaseInvisible: Boolean = false, val knownJvmBinaryClass: KotlinJvmBinaryClass? = null ) : DeserializedContainerSource { constructor( kotlinClass: KotlinJvmBinaryClass, + packageProto: ProtoBuf.Package, + nameResolver: NameResolver, incompatibility: IncompatibleVersionErrorData? = 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 diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/classFile/DeserializerForClassfileDecompiler.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/classFile/DeserializerForClassfileDecompiler.kt index a5953894001..3fd7b2be523 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/classFile/DeserializerForClassfileDecompiler.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/classFile/DeserializerForClassfileDecompiler.kt @@ -92,7 +92,7 @@ class DeserializerForClassfileDecompiler( val (nameResolver, packageProto) = JvmProtoBufUtil.readPackageDataFrom(annotationData, strings) val membersScope = DeserializedPackageMemberScope( createDummyPackageFragment(header.packageName?.let(::FqName) ?: facadeFqName.parent()), packageProto, nameResolver, - JvmPackagePartSource(binaryClassForPackageClass), deserializationComponents + JvmPackagePartSource(binaryClassForPackageClass, packageProto, nameResolver), deserializationComponents ) { emptyList() } return membersScope.getContributedDescriptors().toList() } diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/stubBuilder/clsStubBuilding.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/stubBuilder/clsStubBuilding.kt index e3aa7ba3c07..2817b57c4d2 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/stubBuilder/clsStubBuilding.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/stubBuilder/clsStubBuilding.kt @@ -75,7 +75,8 @@ fun createFileFacadeStub( val fileStub = KotlinFileStubForIde.forFileFacadeStub(facadeFqName) setupFileStub(fileStub, packageFqName) val container = ProtoContainer.Package( - packageFqName, c.nameResolver, c.typeTable, JvmPackagePartSource(JvmClassName.byClassId(ClassId.topLevel(facadeFqName)), null) + packageFqName, c.nameResolver, c.typeTable, + JvmPackagePartSource(JvmClassName.byClassId(ClassId.topLevel(facadeFqName)), null, packageProto, c.nameResolver) ) createDeclarationsStubs(fileStub, c, container, packageProto) return fileStub @@ -95,8 +96,10 @@ fun createMultifileClassStub( val partHeader = partFile.classHeader val (nameResolver, packageProto) = JvmProtoBufUtil.readPackageDataFrom(partHeader.data!!, partHeader.strings!!) val partContext = components.createContext(nameResolver, packageFqName, TypeTable(packageProto.typeTable)) - val container = ProtoContainer.Package(packageFqName, partContext.nameResolver, partContext.typeTable, - JvmPackagePartSource(partFile)) + val container = ProtoContainer.Package( + packageFqName, partContext.nameResolver, partContext.typeTable, + JvmPackagePartSource(partFile, packageProto, nameResolver) + ) createDeclarationsStubs(fileStub, partContext, container, packageProto) } return fileStub