diff --git a/core/deserialization/src/org/jetbrains/kotlin/serialization/deserialization/MemberDeserializer.kt b/core/deserialization/src/org/jetbrains/kotlin/serialization/deserialization/MemberDeserializer.kt index 68d61c370f5..d5f9c3e03b6 100644 --- a/core/deserialization/src/org/jetbrains/kotlin/serialization/deserialization/MemberDeserializer.kt +++ b/core/deserialization/src/org/jetbrains/kotlin/serialization/deserialization/MemberDeserializer.kt @@ -241,8 +241,8 @@ public class MemberDeserializer(private val c: DeserializationContext) { } private fun DeclarationDescriptor.asProtoContainer(): ProtoContainer? = when(this) { - is PackageFragmentDescriptor -> ProtoContainer(null, fqName) - is DeserializedClassDescriptor -> ProtoContainer(classProto, null) + is PackageFragmentDescriptor -> ProtoContainer(null, fqName, c.nameResolver) + is DeserializedClassDescriptor -> ProtoContainer(classProto, null, c.nameResolver) else -> null // TODO: support annotations on lambdas and their parameters } } diff --git a/core/deserialization/src/org/jetbrains/kotlin/serialization/deserialization/ProtoContainer.kt b/core/deserialization/src/org/jetbrains/kotlin/serialization/deserialization/ProtoContainer.kt index 44eaaa22fd5..3e29ef96378 100644 --- a/core/deserialization/src/org/jetbrains/kotlin/serialization/deserialization/ProtoContainer.kt +++ b/core/deserialization/src/org/jetbrains/kotlin/serialization/deserialization/ProtoContainer.kt @@ -19,7 +19,11 @@ package org.jetbrains.kotlin.serialization.deserialization import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.serialization.ProtoBuf -public data class ProtoContainer(val classProto: ProtoBuf.Class?, val packageFqName: FqName?) { +public data class ProtoContainer( + val classProto: ProtoBuf.Class?, + val packageFqName: FqName?, + val nameResolver: NameResolver +) { init { assert((classProto != null) xor (packageFqName != null)) } diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/stubBuilder/ClassClsStubBuilder.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/stubBuilder/ClassClsStubBuilder.kt index 5d434be573e..dea9e3bab82 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/stubBuilder/ClassClsStubBuilder.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/stubBuilder/ClassClsStubBuilder.kt @@ -135,7 +135,7 @@ private class ClassClsStubBuilder( assert(classProto.getPrimaryConstructor().hasData(), "Primary constructor in class is always non-default, so data should not be empty") - createCallableStub(classOrObjectStub, primaryConstructorProto.getData(), c, ProtoContainer(classProto, null)) + createCallableStub(classOrObjectStub, primaryConstructorProto.getData(), c, ProtoContainer(classProto, null, c.nameResolver)) } private fun createDelegationSpecifierList() { @@ -188,7 +188,7 @@ private class ClassClsStubBuilder( } private fun createCallableMemberStubs(classBody: KotlinPlaceHolderStubImpl) { - val container = ProtoContainer(classProto, null) + val container = ProtoContainer(classProto, null, c.nameResolver) val allMembers = classProto.getSecondaryConstructorList() + classProto.getMemberList() for (callableProto in allMembers) { createCallableStub(classBody, callableProto, c, container) 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 4a5de97b9fc..141455d0a52 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 @@ -51,7 +51,7 @@ fun createPackageFacadeStub( ): KotlinFileStubImpl { val fileStub = KotlinFileStubForIde.forFile(packageFqName, packageFqName.isRoot) setupFileStub(fileStub, packageFqName) - val container = ProtoContainer(null, packageFqName) + val container = ProtoContainer(null, packageFqName, c.nameResolver) for (callableProto in packageProto.getMemberList()) { createCallableStub(fileStub, callableProto, c, container) } @@ -66,7 +66,7 @@ fun createFileFacadeStub( val packageFqName = facadeFqName.parent() val fileStub = KotlinFileStubForIde.forFileFacadeStub(facadeFqName, packageFqName.isRoot) setupFileStub(fileStub, packageFqName) - val container = ProtoContainer(null, facadeFqName.parent()) + val container = ProtoContainer(null, facadeFqName.parent(), c.nameResolver) for (callableProto in packageProto.getMemberList()) { createCallableStub(fileStub, callableProto, c, container) } @@ -83,13 +83,12 @@ fun createMultifileClassStub( val partNames = multifileClass.classHeader.filePartClassNames?.asList() val fileStub = KotlinFileStubForIde.forMultifileClassStub(facadeFqName, partNames, packageFqName.isRoot) setupFileStub(fileStub, packageFqName) - val multifileClassContainer = ProtoContainer(null, packageFqName) for (partFile in partFiles) { val partHeader = partFile.classHeader val partData = JvmProtoBufUtil.readPackageDataFrom(partHeader.annotationData!!, partHeader.strings!!) val partContext = components.createContext(partData.nameResolver, packageFqName) for (partMember in partData.packageProto.memberList) { - createCallableStub(fileStub, partMember, partContext, multifileClassContainer) + createCallableStub(fileStub, partMember, partContext, ProtoContainer(null, packageFqName, partContext.nameResolver)) } } return fileStub