diff --git a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/signature/IdSignatureBuilder.kt b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/signature/IdSignatureBuilder.kt index 0e644b6f6d0..df8b6a4c84f 100644 --- a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/signature/IdSignatureBuilder.kt +++ b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/signature/IdSignatureBuilder.kt @@ -11,6 +11,8 @@ import org.jetbrains.kotlin.ir.util.KotlinMangler import org.jetbrains.kotlin.name.FqName abstract class IdSignatureBuilder> { + private data class PropertyAccessorIdHashAndDescription(val id: Long, val description: String) + protected var packageFqn: FqName = FqName.ROOT protected val classFqnSegments = mutableListOf() @@ -26,7 +28,7 @@ abstract class IdSignatureBuilder? = null protected var mask = 0L @@ -73,11 +75,11 @@ abstract class IdSignatureBuilder { + propertyAccessorIdHashAndDescription != null -> { + val accessorSignature = IdSignature.CommonSignature( + packageFqName = packageFqName, + declarationFqName = classFqName, + id = propertyAccessorIdHashAndDescription!!.id, + mask = mask, + description = propertyAccessorIdHashAndDescription!!.description, + ) + propertyAccessorIdHashAndDescription = null + classFqnSegments.run { removeAt(lastIndex) } + val propertySignature = build() + IdSignature.AccessorSignature(propertySignature, accessorSignature) + } + else -> { IdSignature.CommonSignature( packageFqName = packageFqName, declarationFqName = classFqName, @@ -134,19 +149,6 @@ abstract class IdSignatureBuilder { - val accessorSignature = IdSignature.CommonSignature( - packageFqName = packageFqName, - declarationFqName = classFqName, - id = hashIdAcc, - mask = mask, - description = description, - ) - hashIdAcc = null - classFqnSegments.run { removeAt(lastIndex) } - val propertySignature = build() - IdSignature.AccessorSignature(propertySignature, accessorSignature) - } } } diff --git a/compiler/testData/klib/dump-abi/content/classifiers.v2.txt b/compiler/testData/klib/dump-abi/content/classifiers.v2.txt index f0b1be88789..3e34d66bd06 100644 --- a/compiler/testData/klib/dump-abi/content/classifiers.v2.txt +++ b/compiler/testData/klib/dump-abi/content/classifiers.v2.txt @@ -39,7 +39,7 @@ final class classifiers.test/DataClass { // classifiers.test/DataClass|null[0] open enum class classifiers.test/EnumClassWithEntryClasses : kotlin/Enum { // classifiers.test/EnumClassWithEntryClasses|null[0] final val entries // classifiers.test/EnumClassWithEntryClasses.entries|#static{}entries[0] final fun (): kotlin.enums/EnumEntries // classifiers.test/EnumClassWithEntryClasses.entries.|#static(){}[0] - open val overriddenProperty // classifiers.test/EnumClassWithEntryClasses.overriddenProperty|(){}[0] + open val overriddenProperty // classifiers.test/EnumClassWithEntryClasses.overriddenProperty|{}overriddenProperty[0] open fun (): kotlin/String // classifiers.test/EnumClassWithEntryClasses.overriddenProperty.|(){}[0] open fun overriddenFunction(): kotlin/String // classifiers.test/EnumClassWithEntryClasses.overriddenFunction|overriddenFunction(){}[0] final fun valueOf(kotlin/String): classifiers.test/EnumClassWithEntryClasses // classifiers.test/EnumClassWithEntryClasses.valueOf|valueOf#static(kotlin.String){}[0] diff --git a/compiler/testData/klib/dump-abi/content/kt64082-kt64085.kt b/compiler/testData/klib/dump-abi/content/kt64082-kt64085.kt new file mode 100644 index 00000000000..43bba14c2cb --- /dev/null +++ b/compiler/testData/klib/dump-abi/content/kt64082-kt64085.kt @@ -0,0 +1,34 @@ +// MODULE: kt64082_kt64085 + +class ConstHolder1 { + private fun local() { + println(CONST_VAL) + } + + companion object { + const val CONST_VAL: String = "" + } +} + +class ConstHolder2 { + companion object { + const val CONST_VAL: String = "" + } +} + +class Reader { + private val properties: Named + + init { + properties = NamedImpl() + properties.name + } +} + +interface Named { + val name: String +} + +class NamedImpl : Named { + override val name: String = "" +} diff --git a/compiler/testData/klib/dump-abi/content/kt64082-kt64085.v1.txt b/compiler/testData/klib/dump-abi/content/kt64082-kt64085.v1.txt new file mode 100644 index 00000000000..4a64c0812a2 --- /dev/null +++ b/compiler/testData/klib/dump-abi/content/kt64082-kt64085.v1.txt @@ -0,0 +1,32 @@ +// Rendering settings: +// - Signature version: 1 +// - Show manifest properties: false +// - Show declarations: true + +// Library unique name: +final class /ConstHolder1 { // /ConstHolder1|null[0] + constructor () // /ConstHolder1.|-5645683436151566731[0] + final object Companion { // /ConstHolder1.Companion|null[0] + final const val CONST_VAL // /ConstHolder1.Companion.CONST_VAL|-8347527175481482751[0] + final fun (): kotlin/String // /ConstHolder1.Companion.CONST_VAL.|-4753750709173816321[0] + } +} +final class /ConstHolder2 { // /ConstHolder2|null[0] + constructor () // /ConstHolder2.|-5645683436151566731[0] + final object Companion { // /ConstHolder2.Companion|null[0] + final const val CONST_VAL // /ConstHolder2.Companion.CONST_VAL|-8347527175481482751[0] + final fun (): kotlin/String // /ConstHolder2.Companion.CONST_VAL.|-4753750709173816321[0] + } +} +abstract interface /Named { // /Named|null[0] + abstract val name // /Named.name|4231860309499509769[0] + abstract fun (): kotlin/String // /Named.name.|5879344792307730109[0] +} +final class /NamedImpl : /Named { // /NamedImpl|null[0] + final val name // /NamedImpl.name|4231860309499509769[0] + final fun (): kotlin/String // /NamedImpl.name.|5879344792307730109[0] + constructor () // /NamedImpl.|-5645683436151566731[0] +} +final class /Reader { // /Reader|null[0] + constructor () // /Reader.|-5645683436151566731[0] +} diff --git a/compiler/testData/klib/dump-abi/content/kt64082-kt64085.v2.txt b/compiler/testData/klib/dump-abi/content/kt64082-kt64085.v2.txt new file mode 100644 index 00000000000..25db1d5f3c1 --- /dev/null +++ b/compiler/testData/klib/dump-abi/content/kt64082-kt64085.v2.txt @@ -0,0 +1,32 @@ +// Rendering settings: +// - Signature version: 2 +// - Show manifest properties: false +// - Show declarations: true + +// Library unique name: +final class /ConstHolder1 { // /ConstHolder1|null[0] + constructor () // /ConstHolder1.|(){}[0] + final object Companion { // /ConstHolder1.Companion|null[0] + final const val CONST_VAL // /ConstHolder1.Companion.CONST_VAL|{}CONST_VAL[0] + final fun (): kotlin/String // /ConstHolder1.Companion.CONST_VAL.|(){}[0] + } +} +final class /ConstHolder2 { // /ConstHolder2|null[0] + constructor () // /ConstHolder2.|(){}[0] + final object Companion { // /ConstHolder2.Companion|null[0] + final const val CONST_VAL // /ConstHolder2.Companion.CONST_VAL|{}CONST_VAL[0] + final fun (): kotlin/String // /ConstHolder2.Companion.CONST_VAL.|(){}[0] + } +} +abstract interface /Named { // /Named|null[0] + abstract val name // /Named.name|{}name[0] + abstract fun (): kotlin/String // /Named.name.|(){}[0] +} +final class /NamedImpl : /Named { // /NamedImpl|null[0] + final val name // /NamedImpl.name|{}name[0] + final fun (): kotlin/String // /NamedImpl.name.|(){}[0] + constructor () // /NamedImpl.|(){}[0] +} +final class /Reader { // /Reader|null[0] + constructor () // /Reader.|(){}[0] +} diff --git a/compiler/util-klib-abi/tests-gen/org/jetbrains/kotlin/library/abi/ClassicJsLibraryAbiReaderTestGenerated.java b/compiler/util-klib-abi/tests-gen/org/jetbrains/kotlin/library/abi/ClassicJsLibraryAbiReaderTestGenerated.java index 6e96736edb4..aa4d1774640 100644 --- a/compiler/util-klib-abi/tests-gen/org/jetbrains/kotlin/library/abi/ClassicJsLibraryAbiReaderTestGenerated.java +++ b/compiler/util-klib-abi/tests-gen/org/jetbrains/kotlin/library/abi/ClassicJsLibraryAbiReaderTestGenerated.java @@ -97,6 +97,12 @@ public class ClassicJsLibraryAbiReaderTestGenerated extends AbstractClassicJsLib runTest("compiler/testData/klib/dump-abi/content/inheritance.kt"); } + @Test + @TestMetadata("kt64082-kt64085.kt") + public void testKt64082_kt64085() throws Exception { + runTest("compiler/testData/klib/dump-abi/content/kt64082-kt64085.kt"); + } + @Test @TestMetadata("root_package.kt") public void testRoot_package() throws Exception { diff --git a/compiler/util-klib-abi/tests-gen/org/jetbrains/kotlin/library/abi/FirJsLibraryAbiReaderTestGenerated.java b/compiler/util-klib-abi/tests-gen/org/jetbrains/kotlin/library/abi/FirJsLibraryAbiReaderTestGenerated.java index d64b695c0b6..e8e94c26f9a 100644 --- a/compiler/util-klib-abi/tests-gen/org/jetbrains/kotlin/library/abi/FirJsLibraryAbiReaderTestGenerated.java +++ b/compiler/util-klib-abi/tests-gen/org/jetbrains/kotlin/library/abi/FirJsLibraryAbiReaderTestGenerated.java @@ -97,6 +97,12 @@ public class FirJsLibraryAbiReaderTestGenerated extends AbstractFirJsLibraryAbiR runTest("compiler/testData/klib/dump-abi/content/inheritance.kt"); } + @Test + @TestMetadata("kt64082-kt64085.kt") + public void testKt64082_kt64085() throws Exception { + runTest("compiler/testData/klib/dump-abi/content/kt64082-kt64085.kt"); + } + @Test @TestMetadata("root_package.kt") public void testRoot_package() throws Exception { diff --git a/native/native.tests/testData/klib/dump-signatures/callables.ir-signatures.v2.txt b/native/native.tests/testData/klib/dump-signatures/callables.ir-signatures.v2.txt index c641e378d21..33c6c61fd5a 100644 --- a/native/native.tests/testData/klib/dump-signatures/callables.ir-signatures.v2.txt +++ b/native/native.tests/testData/klib/dump-signatures/callables.ir-signatures.v2.txt @@ -13,11 +13,11 @@ kotlin.collections/Collection.iterator|iterator(){}[0] kotlin.collections/Collection|null[0] kotlin.collections/Iterator|null[0] kotlin.collections/List.size.|(){}[0] -kotlin.collections/List.size|(){}[0] +kotlin.collections/List.size|{}size[0] kotlin.collections/List|null[0] kotlin.collections/Map.Entry|null[0] kotlin.collections/Map.entries.|(){}[0] -kotlin.collections/Map.entries|(){}[0] +kotlin.collections/Map.entries|{}entries[0] kotlin.collections/Map|null[0] kotlin.collections/Set|null[0] kotlin/Any.|(){}[0] diff --git a/native/native.tests/testData/klib/dump-signatures/imported_declarations.ir-signatures.v2.txt b/native/native.tests/testData/klib/dump-signatures/imported_declarations.ir-signatures.v2.txt index f8b5da9009d..6969b180660 100644 --- a/native/native.tests/testData/klib/dump-signatures/imported_declarations.ir-signatures.v2.txt +++ b/native/native.tests/testData/klib/dump-signatures/imported_declarations.ir-signatures.v2.txt @@ -3,7 +3,7 @@ imported/test|test(){}[0] // Imported signatures: 11 bar/publicVal.|(){}[0] -bar/publicVal|(){}[0] +bar/publicVal|{}publicVal[0] foo/PublicClass.|(kotlin.Int){}[0] foo/PublicClass|null[0] foo/publicFun|publicFun(){}[0] diff --git a/native/native.tests/testData/klib/dump-signatures/imported_from_cinterop.ir-signatures.v2.txt b/native/native.tests/testData/klib/dump-signatures/imported_from_cinterop.ir-signatures.v2.txt index b2e5e3e9dc1..0dda3f8f612 100644 --- a/native/native.tests/testData/klib/dump-signatures/imported_from_cinterop.ir-signatures.v2.txt +++ b/native/native.tests/testData/klib/dump-signatures/imported_from_cinterop.ir-signatures.v2.txt @@ -26,13 +26,13 @@ imported_from_cinterop.lib/Base.init|objc:init[100] imported_from_cinterop.lib/Base.nonOverriddenFunction|objc:nonOverriddenFunction[100] imported_from_cinterop.lib/Base.nonOverriddenProperty.|objc:nonOverriddenProperty#Accessor[100] imported_from_cinterop.lib/Base.nonOverriddenProperty.|objc:setNonOverriddenProperty:#Accessor[100] -imported_from_cinterop.lib/Base.nonOverriddenProperty|objc:nonOverriddenProperty#Accessor[100] imported_from_cinterop.lib/Base.nonOverriddenProperty|objc:nonOverriddenProperty[100] +imported_from_cinterop.lib/Base.nonOverriddenProperty|{}nonOverriddenProperty[100] imported_from_cinterop.lib/Base.overriddenFunction|objc:overriddenFunction[100] imported_from_cinterop.lib/Base.overriddenProperty.|objc:overriddenProperty#Accessor[100] imported_from_cinterop.lib/Base.overriddenProperty.|objc:setOverriddenProperty:#Accessor[100] -imported_from_cinterop.lib/Base.overriddenProperty|objc:overriddenProperty#Accessor[100] imported_from_cinterop.lib/Base.overriddenProperty|objc:overriddenProperty[100] +imported_from_cinterop.lib/Base.overriddenProperty|{}overriddenProperty[100] imported_from_cinterop.lib/Base.setNonOverriddenProperty|objc:setNonOverriddenProperty:[100] imported_from_cinterop.lib/Base.setOverriddenProperty|objc:setOverriddenProperty:[100] imported_from_cinterop.lib/Base.toString|toString(){}[100] diff --git a/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/test/blackbox/FirNativeLibraryAbiReaderTest.java b/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/test/blackbox/FirNativeLibraryAbiReaderTest.java index 5ce46cd8db5..5855a9bcdb1 100644 --- a/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/test/blackbox/FirNativeLibraryAbiReaderTest.java +++ b/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/test/blackbox/FirNativeLibraryAbiReaderTest.java @@ -101,6 +101,12 @@ public class FirNativeLibraryAbiReaderTest extends AbstractNativeLibraryAbiReade runTest("compiler/testData/klib/dump-abi/content/inheritance.kt"); } + @Test + @TestMetadata("kt64082-kt64085.kt") + public void testKt64082_kt64085() throws Exception { + runTest("compiler/testData/klib/dump-abi/content/kt64082-kt64085.kt"); + } + @Test @TestMetadata("root_package.kt") public void testRoot_package() throws Exception { diff --git a/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/test/blackbox/NativeLibraryAbiReaderTest.java b/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/test/blackbox/NativeLibraryAbiReaderTest.java index 9da4866535f..23ab0152d80 100644 --- a/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/test/blackbox/NativeLibraryAbiReaderTest.java +++ b/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/test/blackbox/NativeLibraryAbiReaderTest.java @@ -97,6 +97,12 @@ public class NativeLibraryAbiReaderTest extends AbstractNativeLibraryAbiReaderTe runTest("compiler/testData/klib/dump-abi/content/inheritance.kt"); } + @Test + @TestMetadata("kt64082-kt64085.kt") + public void testKt64082_kt64085() throws Exception { + runTest("compiler/testData/klib/dump-abi/content/kt64082-kt64085.kt"); + } + @Test @TestMetadata("root_package.kt") public void testRoot_package() throws Exception {