From fbd07344176647d005aedd7ece6194f97db1efca Mon Sep 17 00:00:00 2001 From: Leonid Startsev Date: Wed, 5 Jun 2024 17:02:39 +0200 Subject: [PATCH] Use @PublishedApi annotation on functions called from plugin-generated code (#2705) Since these functions can be called from other modules, they should have this annotation to satisfy a compiler visibility checker. Fixes #2703 --- core/api/kotlinx-serialization-core.api | 6 ++++++ core/api/kotlinx-serialization-core.klib.api | 3 +++ .../src/kotlinx/serialization/internal/Enums.kt | 9 +++------ 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/core/api/kotlinx-serialization-core.api b/core/api/kotlinx-serialization-core.api index be7625f3cd..c99f769cd7 100644 --- a/core/api/kotlinx-serialization-core.api +++ b/core/api/kotlinx-serialization-core.api @@ -725,6 +725,12 @@ public final class kotlinx/serialization/internal/EnumSerializer : kotlinx/seria public fun toString ()Ljava/lang/String; } +public final class kotlinx/serialization/internal/EnumsKt { + public static final fun createAnnotatedEnumSerializer (Ljava/lang/String;[Ljava/lang/Enum;[Ljava/lang/String;[[Ljava/lang/annotation/Annotation;[Ljava/lang/annotation/Annotation;)Lkotlinx/serialization/KSerializer; + public static final fun createMarkedEnumSerializer (Ljava/lang/String;[Ljava/lang/Enum;[Ljava/lang/String;[[Ljava/lang/annotation/Annotation;)Lkotlinx/serialization/KSerializer; + public static final fun createSimpleEnumSerializer (Ljava/lang/String;[Ljava/lang/Enum;)Lkotlinx/serialization/KSerializer; +} + public final class kotlinx/serialization/internal/FloatArrayBuilder : kotlinx/serialization/internal/PrimitiveArrayBuilder { public synthetic fun build$kotlinx_serialization_core ()Ljava/lang/Object; } diff --git a/core/api/kotlinx-serialization-core.klib.api b/core/api/kotlinx-serialization-core.klib.api index d5c3ea41f9..0520a19ab3 100644 --- a/core/api/kotlinx-serialization-core.klib.api +++ b/core/api/kotlinx-serialization-core.klib.api @@ -571,6 +571,9 @@ final fun <#A: kotlin/Any?> (kotlinx.serialization/BinaryFormat).kotlinx.seriali final fun <#A: kotlin/Any?> kotlinx.serialization.builtins/ListSerializer(kotlinx.serialization/KSerializer<#A>): kotlinx.serialization/KSerializer> // kotlinx.serialization.builtins/ListSerializer|ListSerializer(kotlinx.serialization.KSerializer<0:0>){0§}[0] final fun <#A: kotlin/Any?> kotlinx.serialization.builtins/SetSerializer(kotlinx.serialization/KSerializer<#A>): kotlinx.serialization/KSerializer> // kotlinx.serialization.builtins/SetSerializer|SetSerializer(kotlinx.serialization.KSerializer<0:0>){0§}[0] final fun <#A: kotlin/Any?> kotlinx.serialization.internal/InlinePrimitiveDescriptor(kotlin/String, kotlinx.serialization/KSerializer<#A>): kotlinx.serialization.descriptors/SerialDescriptor // kotlinx.serialization.internal/InlinePrimitiveDescriptor|InlinePrimitiveDescriptor(kotlin.String;kotlinx.serialization.KSerializer<0:0>){0§}[0] +final fun <#A: kotlin/Enum<#A>> kotlinx.serialization.internal/createAnnotatedEnumSerializer(kotlin/String, kotlin/Array<#A>, kotlin/Array, kotlin/Array?>, kotlin/Array?): kotlinx.serialization/KSerializer<#A> // kotlinx.serialization.internal/createAnnotatedEnumSerializer|createAnnotatedEnumSerializer(kotlin.String;kotlin.Array<0:0>;kotlin.Array;kotlin.Array?>;kotlin.Array?){0§>}[0] +final fun <#A: kotlin/Enum<#A>> kotlinx.serialization.internal/createMarkedEnumSerializer(kotlin/String, kotlin/Array<#A>, kotlin/Array, kotlin/Array?>): kotlinx.serialization/KSerializer<#A> // kotlinx.serialization.internal/createMarkedEnumSerializer|createMarkedEnumSerializer(kotlin.String;kotlin.Array<0:0>;kotlin.Array;kotlin.Array?>){0§>}[0] +final fun <#A: kotlin/Enum<#A>> kotlinx.serialization.internal/createSimpleEnumSerializer(kotlin/String, kotlin/Array<#A>): kotlinx.serialization/KSerializer<#A> // kotlinx.serialization.internal/createSimpleEnumSerializer|createSimpleEnumSerializer(kotlin.String;kotlin.Array<0:0>){0§>}[0] final fun kotlinx.serialization.builtins/BooleanArraySerializer(): kotlinx.serialization/KSerializer // kotlinx.serialization.builtins/BooleanArraySerializer|BooleanArraySerializer(){}[0] final fun kotlinx.serialization.builtins/ByteArraySerializer(): kotlinx.serialization/KSerializer // kotlinx.serialization.builtins/ByteArraySerializer|ByteArraySerializer(){}[0] final fun kotlinx.serialization.builtins/CharArraySerializer(): kotlinx.serialization/KSerializer // kotlinx.serialization.builtins/CharArraySerializer|CharArraySerializer(){}[0] diff --git a/core/commonMain/src/kotlinx/serialization/internal/Enums.kt b/core/commonMain/src/kotlinx/serialization/internal/Enums.kt index 90800d7baa..6d018c1ee3 100644 --- a/core/commonMain/src/kotlinx/serialization/internal/Enums.kt +++ b/core/commonMain/src/kotlinx/serialization/internal/Enums.kt @@ -49,8 +49,7 @@ internal class EnumDescriptor( } } -@OptIn(ExperimentalSerializationApi::class) -@InternalSerializationApi +@PublishedApi internal fun > createSimpleEnumSerializer(serialName: String, values: Array): KSerializer { return EnumSerializer(serialName, values) } @@ -58,8 +57,7 @@ internal fun > createSimpleEnumSerializer(serialName: String, values /** * The function has a bug (#2121) and should not be used by new (1.8.20+) plugins. It is preserved for backward compatibility with previously compiled enum classes. */ -@OptIn(ExperimentalSerializationApi::class) -@InternalSerializationApi +@PublishedApi internal fun > createMarkedEnumSerializer( serialName: String, values: Array, @@ -78,8 +76,7 @@ internal fun > createMarkedEnumSerializer( return EnumSerializer(serialName, values, descriptor) } -@OptIn(ExperimentalSerializationApi::class) -@InternalSerializationApi +@PublishedApi internal fun > createAnnotatedEnumSerializer( serialName: String, values: Array,