From 52e56ca070e3f1469a8be0b97dba59ddf5da7ecc Mon Sep 17 00:00:00 2001 From: Dmitriy Dolovov Date: Fri, 2 Oct 2020 22:04:37 +0300 Subject: [PATCH] kotlinx-metadata: Wrong interpretation of Flag.Constructor.IS_PRIMARY ^KT-42429 --- .../test/kotlinx/metadata/test/MetadataSmokeTest.kt | 2 +- .../kotlinx-metadata/src/kotlinx/metadata/Flag.kt | 12 ++++++++++-- .../src/org/jetbrains/kotlin/kotlinp/printers.kt | 2 +- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/libraries/kotlinx-metadata/jvm/test/kotlinx/metadata/test/MetadataSmokeTest.kt b/libraries/kotlinx-metadata/jvm/test/kotlinx/metadata/test/MetadataSmokeTest.kt index 223c9c03b83..cdef452f3e5 100644 --- a/libraries/kotlinx-metadata/jvm/test/kotlinx/metadata/test/MetadataSmokeTest.kt +++ b/libraries/kotlinx-metadata/jvm/test/kotlinx/metadata/test/MetadataSmokeTest.kt @@ -53,7 +53,7 @@ class MetadataSmokeTest { val klass = KmClass().apply { name = "Hello" flags = flagsOf(Flag.IS_PUBLIC) - constructors += KmConstructor(flagsOf(Flag.IS_PUBLIC, Flag.Constructor.IS_PRIMARY)).apply { + constructors += KmConstructor(flagsOf(Flag.IS_PUBLIC)).apply { signature = JvmMethodSignature("", "()V") } functions += KmFunction(flagsOf(Flag.IS_PUBLIC, Flag.Function.IS_DECLARATION), "hello").apply { diff --git a/libraries/kotlinx-metadata/src/kotlinx/metadata/Flag.kt b/libraries/kotlinx-metadata/src/kotlinx/metadata/Flag.kt index 91c71fd70bf..d24f6655b0c 100644 --- a/libraries/kotlinx-metadata/src/kotlinx/metadata/Flag.kt +++ b/libraries/kotlinx-metadata/src/kotlinx/metadata/Flag.kt @@ -219,11 +219,19 @@ class Flag(private val offset: Int, private val bitWidth: Int, private val value * A container of flags applicable to Kotlin constructors. */ object Constructor { + @JvmField + @Deprecated( + "Use IS_SECONDARY which holds inverted value instead.", + ReplaceWith("Flag.Constructor.IS_SECONDARY"), + level = DeprecationLevel.ERROR + ) + val IS_PRIMARY = Flag(F.IS_SECONDARY, 0) + /** - * Signifies that the corresponding constructor is primary, i.e. declared in the class header, not in the class body. + * Signifies that the corresponding constructor is secondary, i.e. declared not in the class header, but in the class body. */ @JvmField - val IS_PRIMARY = Flag(F.IS_SECONDARY, 0) + val IS_SECONDARY = Flag(F.IS_SECONDARY) /** * Signifies that the corresponding constructor has non-stable parameter names, i.e. cannot be called with named arguments. diff --git a/libraries/tools/kotlinp/src/org/jetbrains/kotlin/kotlinp/printers.kt b/libraries/tools/kotlinp/src/org/jetbrains/kotlin/kotlinp/printers.kt index e92a95d391b..965f159863c 100644 --- a/libraries/tools/kotlinp/src/org/jetbrains/kotlin/kotlinp/printers.kt +++ b/libraries/tools/kotlinp/src/org/jetbrains/kotlin/kotlinp/printers.kt @@ -958,7 +958,7 @@ private val CLASS_FLAGS_MAP = COMMON_FLAGS_MAP + mapOf( ) private val CONSTRUCTOR_FLAGS_MAP = VISIBILITY_FLAGS_MAP + mapOf( - Flag.Constructor.IS_PRIMARY to "/* primary */", + Flag.Constructor.IS_SECONDARY to "/* secondary */", Flag.Constructor.HAS_NON_STABLE_PARAMETER_NAMES to "/* non-stable parameter names */" )