diff --git a/plugins/kotlinx-serialization/kotlinx-serialization.k1/src/org/jetbrains/kotlinx/serialization/compiler/resolve/KSerializerDescriptorResolver.kt b/plugins/kotlinx-serialization/kotlinx-serialization.k1/src/org/jetbrains/kotlinx/serialization/compiler/resolve/KSerializerDescriptorResolver.kt index 0c90fa66e05..ba96198aa9b 100644 --- a/plugins/kotlinx-serialization/kotlinx-serialization.k1/src/org/jetbrains/kotlinx/serialization/compiler/resolve/KSerializerDescriptorResolver.kt +++ b/plugins/kotlinx-serialization/kotlinx-serialization.k1/src/org/jetbrains/kotlinx/serialization/compiler/resolve/KSerializerDescriptorResolver.kt @@ -347,7 +347,8 @@ object KSerializerDescriptorResolver { functionDescriptor.initialize( consParams, - DescriptorVisibilities.PUBLIC + // load constructor for final classes could be internal, because it can't be used in inheritors + if (classDescriptor.modality == Modality.FINAL) DescriptorVisibilities.INTERNAL else DescriptorVisibilities.PUBLIC ) functionDescriptor.returnType = classDescriptor.defaultType @@ -586,7 +587,8 @@ object KSerializerDescriptorResolver { args, returnType, Modality.FINAL, - DescriptorVisibilities.PUBLIC + // write$Self for final classes could be internal, because it can't be called in inheritors + if (thisClass.modality == Modality.FINAL) DescriptorVisibilities.INTERNAL else DescriptorVisibilities.PUBLIC ) return f diff --git a/plugins/kotlinx-serialization/kotlinx-serialization.k2/src/org/jetbrains/kotlinx/serialization/compiler/fir/SerializationFirDeclarationsForMetadataProvider.kt b/plugins/kotlinx-serialization/kotlinx-serialization.k2/src/org/jetbrains/kotlinx/serialization/compiler/fir/SerializationFirDeclarationsForMetadataProvider.kt index 24a41917855..24a4ecfbd1a 100644 --- a/plugins/kotlinx-serialization/kotlinx-serialization.k2/src/org/jetbrains/kotlinx/serialization/compiler/fir/SerializationFirDeclarationsForMetadataProvider.kt +++ b/plugins/kotlinx-serialization/kotlinx-serialization.k2/src/org/jetbrains/kotlinx/serialization/compiler/fir/SerializationFirDeclarationsForMetadataProvider.kt @@ -5,9 +5,11 @@ package org.jetbrains.kotlinx.serialization.compiler.fir +import org.jetbrains.kotlin.descriptors.Visibilities import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.declarations.FirClass import org.jetbrains.kotlin.fir.declarations.FirDeclaration +import org.jetbrains.kotlin.fir.declarations.utils.isFinal import org.jetbrains.kotlin.fir.declarations.utils.isInline import org.jetbrains.kotlin.fir.expressions.FirAnnotation import org.jetbrains.kotlin.fir.expressions.builder.buildAnnotationCall @@ -42,6 +44,9 @@ class SerializationFirDeclarationsForMetadataProvider(session: FirSession) : Fir private fun generateDeserializationConstructor(klass: FirClass): FirDeclaration = createConstructor(klass.symbol, SerializationPluginKey, isPrimary = false) { + // deserialization constructor for final classes could be internal, because it can't be called in inheritors + visibility = if (klass.isFinal) Visibilities.Internal else Visibilities.Public + val serializableProperties = session.serializablePropertiesProvider.getSerializablePropertiesForClass(klass.symbol).serializableProperties val bitMaskSlotCount = serializableProperties.bitMaskSlotCount() @@ -71,6 +76,9 @@ class SerializationFirDeclarationsForMetadataProvider(session: FirSession) : Fir SerialEntityNames.WRITE_SELF_NAME, session.builtinTypes.unitType.type ) { + // write$Self for final classes could be internal, because it can't be called in inheritors + visibility = if (klass.isFinal) Visibilities.Internal else Visibilities.Public + klass.typeParameters.forEach { typeParameter(it.symbol.name) } diff --git a/plugins/kotlinx-serialization/testData/codegen/Basic.asm.ir.txt b/plugins/kotlinx-serialization/testData/codegen/Basic.asm.ir.txt index b8c9a985160..ad4401ed9d8 100644 --- a/plugins/kotlinx-serialization/testData/codegen/Basic.asm.ir.txt +++ b/plugins/kotlinx-serialization/testData/codegen/Basic.asm.ir.txt @@ -190,7 +190,7 @@ public final class ListOfUsers$$serializer : java/lang/Object, kotlinx/serializa ALOAD (2) ALOAD (4) ALOAD (3) - INVOKESTATIC (ListOfUsers, write$Self, (LListOfUsers;Lkotlinx/serialization/encoding/CompositeEncoder;Lkotlinx/serialization/descriptors/SerialDescriptor;)V) + INVOKESTATIC (ListOfUsers, write$Self$main, (LListOfUsers;Lkotlinx/serialization/encoding/CompositeEncoder;Lkotlinx/serialization/descriptors/SerialDescriptor;)V) ALOAD (4) ALOAD (3) INVOKEINTERFACE (kotlinx/serialization/encoding/CompositeEncoder, endStructure, (Lkotlinx/serialization/descriptors/SerialDescriptor;)V) @@ -310,7 +310,7 @@ public final class ListOfUsers : java/lang/Object { public final java.util.List getList() - public final static void write$Self(ListOfUsers self, kotlinx.serialization.encoding.CompositeEncoder output, kotlinx.serialization.descriptors.SerialDescriptor serialDesc) { + public final static void write$Self$main(ListOfUsers self, kotlinx.serialization.encoding.CompositeEncoder output, kotlinx.serialization.descriptors.SerialDescriptor serialDesc) { LABEL (L0) LINENUMBER (12) GETSTATIC (ListOfUsers, $childSerializers, [Lkotlinx/serialization/KSerializer;) @@ -512,7 +512,7 @@ public final class OptionalUser$$serializer : java/lang/Object, kotlinx/serializ ALOAD (2) ALOAD (4) ALOAD (3) - INVOKESTATIC (OptionalUser, write$Self, (LOptionalUser;Lkotlinx/serialization/encoding/CompositeEncoder;Lkotlinx/serialization/descriptors/SerialDescriptor;)V) + INVOKESTATIC (OptionalUser, write$Self$main, (LOptionalUser;Lkotlinx/serialization/encoding/CompositeEncoder;Lkotlinx/serialization/descriptors/SerialDescriptor;)V) ALOAD (4) ALOAD (3) INVOKEINTERFACE (kotlinx/serialization/encoding/CompositeEncoder, endStructure, (Lkotlinx/serialization/descriptors/SerialDescriptor;)V) @@ -661,7 +661,7 @@ public final class OptionalUser : java/lang/Object { public final User getUser() - public final static void write$Self(OptionalUser self, kotlinx.serialization.encoding.CompositeEncoder output, kotlinx.serialization.descriptors.SerialDescriptor serialDesc) { + public final static void write$Self$main(OptionalUser self, kotlinx.serialization.encoding.CompositeEncoder output, kotlinx.serialization.descriptors.SerialDescriptor serialDesc) { LABEL (L0) LINENUMBER (9) ALOAD (1) @@ -911,7 +911,7 @@ public final class User$$serializer : java/lang/Object, kotlinx/serialization/in ALOAD (2) ALOAD (4) ALOAD (3) - INVOKESTATIC (User, write$Self, (LUser;Lkotlinx/serialization/encoding/CompositeEncoder;Lkotlinx/serialization/descriptors/SerialDescriptor;)V) + INVOKESTATIC (User, write$Self$main, (LUser;Lkotlinx/serialization/encoding/CompositeEncoder;Lkotlinx/serialization/descriptors/SerialDescriptor;)V) ALOAD (4) ALOAD (3) INVOKEINTERFACE (kotlinx/serialization/encoding/CompositeEncoder, endStructure, (Lkotlinx/serialization/descriptors/SerialDescriptor;)V) @@ -1025,7 +1025,7 @@ public final class User : java/lang/Object { public final java.lang.String getLastName() - public final static void write$Self(User self, kotlinx.serialization.encoding.CompositeEncoder output, kotlinx.serialization.descriptors.SerialDescriptor serialDesc) { + public final static void write$Self$main(User self, kotlinx.serialization.encoding.CompositeEncoder output, kotlinx.serialization.descriptors.SerialDescriptor serialDesc) { LABEL (L0) LINENUMBER (6) ALOAD (1) diff --git a/plugins/kotlinx-serialization/testData/codegen/Basic.asm.txt b/plugins/kotlinx-serialization/testData/codegen/Basic.asm.txt index 13bcce71737..80dfee45e28 100644 --- a/plugins/kotlinx-serialization/testData/codegen/Basic.asm.txt +++ b/plugins/kotlinx-serialization/testData/codegen/Basic.asm.txt @@ -268,7 +268,7 @@ public final class ListOfUsers : java/lang/Object { public final java.util.List getList() - public final static void write$Self(ListOfUsers self, kotlinx.serialization.encoding.CompositeEncoder output, kotlinx.serialization.descriptors.SerialDescriptor serialDesc) { + public final static void write$Self$main(ListOfUsers self, kotlinx.serialization.encoding.CompositeEncoder output, kotlinx.serialization.descriptors.SerialDescriptor serialDesc) { LABEL (L0) ALOAD (0) LDC (self) @@ -600,7 +600,7 @@ public final class OptionalUser : java/lang/Object { public final User getUser() - public final static void write$Self(OptionalUser self, kotlinx.serialization.encoding.CompositeEncoder output, kotlinx.serialization.descriptors.SerialDescriptor serialDesc) { + public final static void write$Self$main(OptionalUser self, kotlinx.serialization.encoding.CompositeEncoder output, kotlinx.serialization.descriptors.SerialDescriptor serialDesc) { LABEL (L0) ALOAD (0) LDC (self) @@ -937,7 +937,7 @@ public final class User : java/lang/Object { public final java.lang.String getLastName() - public final static void write$Self(User self, kotlinx.serialization.encoding.CompositeEncoder output, kotlinx.serialization.descriptors.SerialDescriptor serialDesc) { + public final static void write$Self$main(User self, kotlinx.serialization.encoding.CompositeEncoder output, kotlinx.serialization.descriptors.SerialDescriptor serialDesc) { LABEL (L0) ALOAD (0) LDC (self) diff --git a/plugins/kotlinx-serialization/testData/codegen/Basic.kt b/plugins/kotlinx-serialization/testData/codegen/Basic.kt index e531c465a06..e36ad5a6f4c 100644 --- a/plugins/kotlinx-serialization/testData/codegen/Basic.kt +++ b/plugins/kotlinx-serialization/testData/codegen/Basic.kt @@ -1,4 +1,4 @@ -// CURIOUS_ABOUT: serialize, deserialize, write$Self, childSerializers, , , getDescriptor +// CURIOUS_ABOUT: serialize, deserialize, write$Self, write$Self$main, childSerializers, , , getDescriptor // WITH_STDLIB import kotlinx.serialization.* diff --git a/plugins/kotlinx-serialization/testData/codegen/Intrinsics.asm.ir.txt b/plugins/kotlinx-serialization/testData/codegen/Intrinsics.asm.ir.txt index cc00b38db9a..0c1bfa22c46 100644 --- a/plugins/kotlinx-serialization/testData/codegen/Intrinsics.asm.ir.txt +++ b/plugins/kotlinx-serialization/testData/codegen/Intrinsics.asm.ir.txt @@ -59,7 +59,7 @@ public final class Box : java/lang/Object { public java.lang.String toString() - public final static void write$Self(Box self, kotlinx.serialization.encoding.CompositeEncoder output, kotlinx.serialization.descriptors.SerialDescriptor serialDesc, kotlinx.serialization.KSerializer typeSerial0) + public final static void write$Self$main(Box self, kotlinx.serialization.encoding.CompositeEncoder output, kotlinx.serialization.descriptors.SerialDescriptor serialDesc, kotlinx.serialization.KSerializer typeSerial0) } public final class IntrinsicsKt : java/lang/Object { @@ -263,5 +263,5 @@ public final class Simple : java/lang/Object { public final java.lang.String getLastName() - public final static void write$Self(Simple self, kotlinx.serialization.encoding.CompositeEncoder output, kotlinx.serialization.descriptors.SerialDescriptor serialDesc) + public final static void write$Self$main(Simple self, kotlinx.serialization.encoding.CompositeEncoder output, kotlinx.serialization.descriptors.SerialDescriptor serialDesc) } diff --git a/plugins/kotlinx-serialization/testData/codegen/Intrinsics.asm.txt b/plugins/kotlinx-serialization/testData/codegen/Intrinsics.asm.txt index 085f50fe441..7099ad6e6bf 100644 --- a/plugins/kotlinx-serialization/testData/codegen/Intrinsics.asm.txt +++ b/plugins/kotlinx-serialization/testData/codegen/Intrinsics.asm.txt @@ -57,7 +57,7 @@ public final class Box : java/lang/Object { public java.lang.String toString() - public final static void write$Self(Box self, kotlinx.serialization.encoding.CompositeEncoder output, kotlinx.serialization.descriptors.SerialDescriptor serialDesc, kotlinx.serialization.KSerializer typeSerial0) + public final static void write$Self$main(Box self, kotlinx.serialization.encoding.CompositeEncoder output, kotlinx.serialization.descriptors.SerialDescriptor serialDesc, kotlinx.serialization.KSerializer typeSerial0) } public final class IntrinsicsKt : java/lang/Object { @@ -475,5 +475,5 @@ public final class Simple : java/lang/Object { public final java.lang.String getLastName() - public final static void write$Self(Simple self, kotlinx.serialization.encoding.CompositeEncoder output, kotlinx.serialization.descriptors.SerialDescriptor serialDesc) + public final static void write$Self$main(Simple self, kotlinx.serialization.encoding.CompositeEncoder output, kotlinx.serialization.descriptors.SerialDescriptor serialDesc) } diff --git a/plugins/kotlinx-serialization/testData/codegen/IntrinsicsAdvanced.asm.ir.txt b/plugins/kotlinx-serialization/testData/codegen/IntrinsicsAdvanced.asm.ir.txt index 12abb1a5d01..884caafc23a 100644 --- a/plugins/kotlinx-serialization/testData/codegen/IntrinsicsAdvanced.asm.ir.txt +++ b/plugins/kotlinx-serialization/testData/codegen/IntrinsicsAdvanced.asm.ir.txt @@ -205,5 +205,5 @@ public final class Simple : java/lang/Object { public final java.lang.String getLastName() - public final static void write$Self(Simple self, kotlinx.serialization.encoding.CompositeEncoder output, kotlinx.serialization.descriptors.SerialDescriptor serialDesc) + public final static void write$Self$main(Simple self, kotlinx.serialization.encoding.CompositeEncoder output, kotlinx.serialization.descriptors.SerialDescriptor serialDesc) } diff --git a/plugins/kotlinx-serialization/testData/codegen/IntrinsicsAdvanced.asm.txt b/plugins/kotlinx-serialization/testData/codegen/IntrinsicsAdvanced.asm.txt index d90f27167ac..10d6c6cf3a2 100644 --- a/plugins/kotlinx-serialization/testData/codegen/IntrinsicsAdvanced.asm.txt +++ b/plugins/kotlinx-serialization/testData/codegen/IntrinsicsAdvanced.asm.txt @@ -368,5 +368,5 @@ public final class Simple : java/lang/Object { public final java.lang.String getLastName() - public final static void write$Self(Simple self, kotlinx.serialization.encoding.CompositeEncoder output, kotlinx.serialization.descriptors.SerialDescriptor serialDesc) + public final static void write$Self$main(Simple self, kotlinx.serialization.encoding.CompositeEncoder output, kotlinx.serialization.descriptors.SerialDescriptor serialDesc) } diff --git a/plugins/kotlinx-serialization/testData/codegen/Sealed.asm.ir.txt b/plugins/kotlinx-serialization/testData/codegen/Sealed.asm.ir.txt index 0fef1c2ecb7..9d7065e523e 100644 --- a/plugins/kotlinx-serialization/testData/codegen/Sealed.asm.ir.txt +++ b/plugins/kotlinx-serialization/testData/codegen/Sealed.asm.ir.txt @@ -271,7 +271,7 @@ public final class Container : java/lang/Object { public final Result getR() - public final static void write$Self(Container self, kotlinx.serialization.encoding.CompositeEncoder output, kotlinx.serialization.descriptors.SerialDescriptor serialDesc) { + public final static void write$Self$main(Container self, kotlinx.serialization.encoding.CompositeEncoder output, kotlinx.serialization.descriptors.SerialDescriptor serialDesc) { LABEL (L0) LINENUMBER (18) GETSTATIC (Container, $childSerializers, [Lkotlinx/serialization/KSerializer;) @@ -724,7 +724,7 @@ public final class Result$OK : Result { public final java.lang.String getS() - public final static void write$Self(Result$OK self, kotlinx.serialization.encoding.CompositeEncoder output, kotlinx.serialization.descriptors.SerialDescriptor serialDesc) { + public final static void write$Self$main(Result$OK self, kotlinx.serialization.encoding.CompositeEncoder output, kotlinx.serialization.descriptors.SerialDescriptor serialDesc) { LABEL (L0) LINENUMBER (14) ALOAD (0) diff --git a/plugins/kotlinx-serialization/testData/codegen/Sealed.asm.txt b/plugins/kotlinx-serialization/testData/codegen/Sealed.asm.txt index 92e9507a0c3..98a51be9442 100644 --- a/plugins/kotlinx-serialization/testData/codegen/Sealed.asm.txt +++ b/plugins/kotlinx-serialization/testData/codegen/Sealed.asm.txt @@ -318,7 +318,7 @@ public final class Container : java/lang/Object { public final Result getR() - public final static void write$Self(Container self, kotlinx.serialization.encoding.CompositeEncoder output, kotlinx.serialization.descriptors.SerialDescriptor serialDesc) { + public final static void write$Self$main(Container self, kotlinx.serialization.encoding.CompositeEncoder output, kotlinx.serialization.descriptors.SerialDescriptor serialDesc) { LABEL (L0) ALOAD (0) LDC (self) @@ -787,7 +787,7 @@ public final class Result$OK : Result { public final java.lang.String getS() - public final static void write$Self(Result$OK self, kotlinx.serialization.encoding.CompositeEncoder output, kotlinx.serialization.descriptors.SerialDescriptor serialDesc) { + public final static void write$Self$main(Result$OK self, kotlinx.serialization.encoding.CompositeEncoder output, kotlinx.serialization.descriptors.SerialDescriptor serialDesc) { LABEL (L0) ALOAD (0) LDC (self) diff --git a/plugins/kotlinx-serialization/testData/codegen/Sealed.kt b/plugins/kotlinx-serialization/testData/codegen/Sealed.kt index d67a97da7ea..b7a71b5df95 100644 --- a/plugins/kotlinx-serialization/testData/codegen/Sealed.kt +++ b/plugins/kotlinx-serialization/testData/codegen/Sealed.kt @@ -1,4 +1,4 @@ -// CURIOUS_ABOUT: deserialize, write$Self, childSerializers, , , invoke, serializer +// CURIOUS_ABOUT: deserialize, write$Self, write$Self$main, childSerializers, , , invoke, serializer // WITH_STDLIB import kotlinx.serialization.* diff --git a/plugins/kotlinx-serialization/testData/diagnostics/DuplicateSerialName.txt b/plugins/kotlinx-serialization/testData/diagnostics/DuplicateSerialName.txt index 2e220f82da2..0ca31277023 100644 --- a/plugins/kotlinx-serialization/testData/diagnostics/DuplicateSerialName.txt +++ b/plugins/kotlinx-serialization/testData/diagnostics/DuplicateSerialName.txt @@ -2,12 +2,12 @@ package @kotlinx.serialization.Serializable public final class Derived : Parent { public constructor Derived(/*0*/ arg: kotlin.Int) - @kotlin.Deprecated(level = DeprecationLevel.HIDDEN, message = "This synthesized declaration should not be used directly", replaceWith = kotlin.ReplaceWith(expression = "", imports = {})) public /*synthesized*/ constructor Derived(/*0*/ seen1: kotlin.Int, /*1*/ arg: kotlin.Int, /*2*/ arg: kotlin.Int, /*3*/ serializationConstructorMarker: kotlinx.serialization.internal.SerializationConstructorMarker?) + @kotlin.Deprecated(level = DeprecationLevel.HIDDEN, message = "This synthesized declaration should not be used directly", replaceWith = kotlin.ReplaceWith(expression = "", imports = {})) internal /*synthesized*/ constructor Derived(/*0*/ seen1: kotlin.Int, /*1*/ arg: kotlin.Int, /*2*/ arg: kotlin.Int, /*3*/ serializationConstructorMarker: kotlinx.serialization.internal.SerializationConstructorMarker?) public open override /*1*/ val arg: kotlin.Int public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String - @kotlin.jvm.JvmStatic public final /*synthesized*/ fun `write$Self`(/*0*/ self: Derived, /*1*/ output: kotlinx.serialization.encoding.CompositeEncoder, /*2*/ serialDesc: kotlinx.serialization.descriptors.SerialDescriptor): kotlin.Unit + @kotlin.jvm.JvmStatic internal final /*synthesized*/ fun `write$Self`(/*0*/ self: Derived, /*1*/ output: kotlinx.serialization.encoding.CompositeEncoder, /*2*/ serialDesc: kotlinx.serialization.descriptors.SerialDescriptor): kotlin.Unit @kotlin.jvm.JvmStatic public final override /*1*/ /*fake_override*/ fun `write$Self`(/*0*/ self: Parent, /*1*/ output: kotlinx.serialization.encoding.CompositeEncoder, /*2*/ serialDesc: kotlinx.serialization.descriptors.SerialDescriptor): kotlin.Unit @kotlin.Deprecated(level = DeprecationLevel.HIDDEN, message = "This synthesized declaration should not be used directly", replaceWith = kotlin.ReplaceWith(expression = "", imports = {})) public object `$serializer` : kotlinx.serialization.internal.GeneratedSerializer { @@ -60,3 +60,4 @@ package public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String } } + diff --git a/plugins/kotlinx-serialization/testData/diagnostics/LazyRecursionBug.txt b/plugins/kotlinx-serialization/testData/diagnostics/LazyRecursionBug.txt index ee1732239e6..80b123cdda6 100644 --- a/plugins/kotlinx-serialization/testData/diagnostics/LazyRecursionBug.txt +++ b/plugins/kotlinx-serialization/testData/diagnostics/LazyRecursionBug.txt @@ -2,7 +2,7 @@ package @kotlinx.serialization.Serializable public final class Digest { public constructor Digest() - @kotlin.Deprecated(level = DeprecationLevel.HIDDEN, message = "This synthesized declaration should not be used directly", replaceWith = kotlin.ReplaceWith(expression = "", imports = {})) public /*synthesized*/ constructor Digest(/*0*/ seen1: kotlin.Int, /*1*/ serializationConstructorMarker: kotlinx.serialization.internal.SerializationConstructorMarker?) + @kotlin.Deprecated(level = DeprecationLevel.HIDDEN, message = "This synthesized declaration should not be used directly", replaceWith = kotlin.ReplaceWith(expression = "", imports = {})) internal /*synthesized*/ constructor Digest(/*0*/ seen1: kotlin.Int, /*1*/ serializationConstructorMarker: kotlinx.serialization.internal.SerializationConstructorMarker?) public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String diff --git a/plugins/kotlinx-serialization/testData/diagnostics/NoSuitableCtorInParent.txt b/plugins/kotlinx-serialization/testData/diagnostics/NoSuitableCtorInParent.txt index 257be147901..89afce13840 100644 --- a/plugins/kotlinx-serialization/testData/diagnostics/NoSuitableCtorInParent.txt +++ b/plugins/kotlinx-serialization/testData/diagnostics/NoSuitableCtorInParent.txt @@ -1,14 +1,14 @@ package @kotlinx.serialization.Serializable public final class Derived : NonSerializableParent { - @kotlin.Deprecated(level = DeprecationLevel.HIDDEN, message = "This synthesized declaration should not be used directly", replaceWith = kotlin.ReplaceWith(expression = "", imports = {})) public /*synthesized*/ constructor Derived(/*0*/ seen1: kotlin.Int, /*1*/ someData: kotlin.String?, /*2*/ serializationConstructorMarker: kotlinx.serialization.internal.SerializationConstructorMarker?) + @kotlin.Deprecated(level = DeprecationLevel.HIDDEN, message = "This synthesized declaration should not be used directly", replaceWith = kotlin.ReplaceWith(expression = "", imports = {})) internal /*synthesized*/ constructor Derived(/*0*/ seen1: kotlin.Int, /*1*/ someData: kotlin.String?, /*2*/ serializationConstructorMarker: kotlinx.serialization.internal.SerializationConstructorMarker?) public constructor Derived(/*0*/ someData: kotlin.String) public final override /*1*/ /*fake_override*/ val arg: kotlin.Int public final val someData: kotlin.String public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String - @kotlin.jvm.JvmStatic public final /*synthesized*/ fun `write$Self`(/*0*/ self: Derived, /*1*/ output: kotlinx.serialization.encoding.CompositeEncoder, /*2*/ serialDesc: kotlinx.serialization.descriptors.SerialDescriptor): kotlin.Unit + @kotlin.jvm.JvmStatic internal final /*synthesized*/ fun `write$Self`(/*0*/ self: Derived, /*1*/ output: kotlinx.serialization.encoding.CompositeEncoder, /*2*/ serialDesc: kotlinx.serialization.descriptors.SerialDescriptor): kotlin.Unit @kotlin.Deprecated(level = DeprecationLevel.HIDDEN, message = "This synthesized declaration should not be used directly", replaceWith = kotlin.ReplaceWith(expression = "", imports = {})) public object `$serializer` : kotlinx.serialization.internal.GeneratedSerializer { private constructor `$serializer`() diff --git a/plugins/kotlinx-serialization/testData/diagnostics/NonSerializable.txt b/plugins/kotlinx-serialization/testData/diagnostics/NonSerializable.txt index 8abd459cf5e..363dd420520 100644 --- a/plugins/kotlinx-serialization/testData/diagnostics/NonSerializable.txt +++ b/plugins/kotlinx-serialization/testData/diagnostics/NonSerializable.txt @@ -2,12 +2,12 @@ package @kotlinx.serialization.Serializable public final class Basic { public constructor Basic(/*0*/ foo: NonSerializable) - @kotlin.Deprecated(level = DeprecationLevel.HIDDEN, message = "This synthesized declaration should not be used directly", replaceWith = kotlin.ReplaceWith(expression = "", imports = {})) public /*synthesized*/ constructor Basic(/*0*/ seen1: kotlin.Int, /*1*/ foo: NonSerializable?, /*2*/ serializationConstructorMarker: kotlinx.serialization.internal.SerializationConstructorMarker?) + @kotlin.Deprecated(level = DeprecationLevel.HIDDEN, message = "This synthesized declaration should not be used directly", replaceWith = kotlin.ReplaceWith(expression = "", imports = {})) internal /*synthesized*/ constructor Basic(/*0*/ seen1: kotlin.Int, /*1*/ foo: NonSerializable?, /*2*/ serializationConstructorMarker: kotlinx.serialization.internal.SerializationConstructorMarker?) public final val foo: NonSerializable public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String - @kotlin.jvm.JvmStatic public final /*synthesized*/ fun `write$Self`(/*0*/ self: Basic, /*1*/ output: kotlinx.serialization.encoding.CompositeEncoder, /*2*/ serialDesc: kotlinx.serialization.descriptors.SerialDescriptor): kotlin.Unit + @kotlin.jvm.JvmStatic internal final /*synthesized*/ fun `write$Self`(/*0*/ self: Basic, /*1*/ output: kotlinx.serialization.encoding.CompositeEncoder, /*2*/ serialDesc: kotlinx.serialization.descriptors.SerialDescriptor): kotlin.Unit @kotlin.Deprecated(level = DeprecationLevel.HIDDEN, message = "This synthesized declaration should not be used directly", replaceWith = kotlin.ReplaceWith(expression = "", imports = {})) public object `$serializer` : kotlinx.serialization.internal.GeneratedSerializer { private constructor `$serializer`() @@ -31,13 +31,13 @@ package } @kotlinx.serialization.Serializable public final class Inside { - @kotlin.Deprecated(level = DeprecationLevel.HIDDEN, message = "This synthesized declaration should not be used directly", replaceWith = kotlin.ReplaceWith(expression = "", imports = {})) public /*synthesized*/ constructor Inside(/*0*/ seen1: kotlin.Int, /*1*/ foo: kotlin.collections.List?, /*2*/ serializationConstructorMarker: kotlinx.serialization.internal.SerializationConstructorMarker?) + @kotlin.Deprecated(level = DeprecationLevel.HIDDEN, message = "This synthesized declaration should not be used directly", replaceWith = kotlin.ReplaceWith(expression = "", imports = {})) internal /*synthesized*/ constructor Inside(/*0*/ seen1: kotlin.Int, /*1*/ foo: kotlin.collections.List?, /*2*/ serializationConstructorMarker: kotlinx.serialization.internal.SerializationConstructorMarker?) public constructor Inside(/*0*/ foo: kotlin.collections.List) public final val foo: kotlin.collections.List public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String - @kotlin.jvm.JvmStatic public final /*synthesized*/ fun `write$Self`(/*0*/ self: Inside, /*1*/ output: kotlinx.serialization.encoding.CompositeEncoder, /*2*/ serialDesc: kotlinx.serialization.descriptors.SerialDescriptor): kotlin.Unit + @kotlin.jvm.JvmStatic internal final /*synthesized*/ fun `write$Self`(/*0*/ self: Inside, /*1*/ output: kotlinx.serialization.encoding.CompositeEncoder, /*2*/ serialDesc: kotlinx.serialization.descriptors.SerialDescriptor): kotlin.Unit @kotlin.Deprecated(level = DeprecationLevel.HIDDEN, message = "This synthesized declaration should not be used directly", replaceWith = kotlin.ReplaceWith(expression = "", imports = {})) public object `$serializer` : kotlinx.serialization.internal.GeneratedSerializer { private constructor `$serializer`() @@ -69,12 +69,12 @@ public final class NonSerializable { @kotlinx.serialization.Serializable public final class WithImplicitType { public constructor WithImplicitType() - @kotlin.Deprecated(level = DeprecationLevel.HIDDEN, message = "This synthesized declaration should not be used directly", replaceWith = kotlin.ReplaceWith(expression = "", imports = {})) public /*synthesized*/ constructor WithImplicitType(/*0*/ seen1: kotlin.Int, /*1*/ foo: NonSerializable?, /*2*/ serializationConstructorMarker: kotlinx.serialization.internal.SerializationConstructorMarker?) + @kotlin.Deprecated(level = DeprecationLevel.HIDDEN, message = "This synthesized declaration should not be used directly", replaceWith = kotlin.ReplaceWith(expression = "", imports = {})) internal /*synthesized*/ constructor WithImplicitType(/*0*/ seen1: kotlin.Int, /*1*/ foo: NonSerializable?, /*2*/ serializationConstructorMarker: kotlinx.serialization.internal.SerializationConstructorMarker?) public final val foo: NonSerializable public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String - @kotlin.jvm.JvmStatic public final /*synthesized*/ fun `write$Self`(/*0*/ self: WithImplicitType, /*1*/ output: kotlinx.serialization.encoding.CompositeEncoder, /*2*/ serialDesc: kotlinx.serialization.descriptors.SerialDescriptor): kotlin.Unit + @kotlin.jvm.JvmStatic internal final /*synthesized*/ fun `write$Self`(/*0*/ self: WithImplicitType, /*1*/ output: kotlinx.serialization.encoding.CompositeEncoder, /*2*/ serialDesc: kotlinx.serialization.descriptors.SerialDescriptor): kotlin.Unit @kotlin.Deprecated(level = DeprecationLevel.HIDDEN, message = "This synthesized declaration should not be used directly", replaceWith = kotlin.ReplaceWith(expression = "", imports = {})) public object `$serializer` : kotlinx.serialization.internal.GeneratedSerializer { private constructor `$serializer`() diff --git a/plugins/kotlinx-serialization/testData/diagnostics/NullabilityIncompatible.txt b/plugins/kotlinx-serialization/testData/diagnostics/NullabilityIncompatible.txt index e3280bb5d5b..48b43d3144b 100644 --- a/plugins/kotlinx-serialization/testData/diagnostics/NullabilityIncompatible.txt +++ b/plugins/kotlinx-serialization/testData/diagnostics/NullabilityIncompatible.txt @@ -2,12 +2,12 @@ package @kotlinx.serialization.Serializable public final class Foo { public constructor Foo(/*0*/ foo: Nope) - @kotlin.Deprecated(level = DeprecationLevel.HIDDEN, message = "This synthesized declaration should not be used directly", replaceWith = kotlin.ReplaceWith(expression = "", imports = {})) public /*synthesized*/ constructor Foo(/*0*/ seen1: kotlin.Int, /*1*/ foo: Nope?, /*2*/ serializationConstructorMarker: kotlinx.serialization.internal.SerializationConstructorMarker?) + @kotlin.Deprecated(level = DeprecationLevel.HIDDEN, message = "This synthesized declaration should not be used directly", replaceWith = kotlin.ReplaceWith(expression = "", imports = {})) internal /*synthesized*/ constructor Foo(/*0*/ seen1: kotlin.Int, /*1*/ foo: Nope?, /*2*/ serializationConstructorMarker: kotlinx.serialization.internal.SerializationConstructorMarker?) public final val foo: Nope public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String - @kotlin.jvm.JvmStatic public final /*synthesized*/ fun `write$Self`(/*0*/ self: Foo, /*1*/ output: kotlinx.serialization.encoding.CompositeEncoder, /*2*/ serialDesc: kotlinx.serialization.descriptors.SerialDescriptor): kotlin.Unit + @kotlin.jvm.JvmStatic internal final /*synthesized*/ fun `write$Self`(/*0*/ self: Foo, /*1*/ output: kotlinx.serialization.encoding.CompositeEncoder, /*2*/ serialDesc: kotlinx.serialization.descriptors.SerialDescriptor): kotlin.Unit @kotlin.Deprecated(level = DeprecationLevel.HIDDEN, message = "This synthesized declaration should not be used directly", replaceWith = kotlin.ReplaceWith(expression = "", imports = {})) public object `$serializer` : kotlinx.serialization.internal.GeneratedSerializer { private constructor `$serializer`() diff --git a/plugins/kotlinx-serialization/testData/diagnostics/ParamIsNotProperty.txt b/plugins/kotlinx-serialization/testData/diagnostics/ParamIsNotProperty.txt index 0d5dcf807e7..303e9b16df1 100644 --- a/plugins/kotlinx-serialization/testData/diagnostics/ParamIsNotProperty.txt +++ b/plugins/kotlinx-serialization/testData/diagnostics/ParamIsNotProperty.txt @@ -1,13 +1,13 @@ package @kotlinx.serialization.Serializable public final class Test { - @kotlin.Deprecated(level = DeprecationLevel.HIDDEN, message = "This synthesized declaration should not be used directly", replaceWith = kotlin.ReplaceWith(expression = "", imports = {})) public /*synthesized*/ constructor Test(/*0*/ seen1: kotlin.Int, /*1*/ someData: kotlin.String?, /*2*/ serializationConstructorMarker: kotlinx.serialization.internal.SerializationConstructorMarker?) + @kotlin.Deprecated(level = DeprecationLevel.HIDDEN, message = "This synthesized declaration should not be used directly", replaceWith = kotlin.ReplaceWith(expression = "", imports = {})) internal /*synthesized*/ constructor Test(/*0*/ seen1: kotlin.Int, /*1*/ someData: kotlin.String?, /*2*/ serializationConstructorMarker: kotlinx.serialization.internal.SerializationConstructorMarker?) public constructor Test(/*0*/ someData: kotlin.String, /*1*/ cantBeDeserialized: kotlin.Int) public final val someData: kotlin.String public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String - @kotlin.jvm.JvmStatic public final /*synthesized*/ fun `write$Self`(/*0*/ self: Test, /*1*/ output: kotlinx.serialization.encoding.CompositeEncoder, /*2*/ serialDesc: kotlinx.serialization.descriptors.SerialDescriptor): kotlin.Unit + @kotlin.jvm.JvmStatic internal final /*synthesized*/ fun `write$Self`(/*0*/ self: Test, /*1*/ output: kotlinx.serialization.encoding.CompositeEncoder, /*2*/ serialDesc: kotlinx.serialization.descriptors.SerialDescriptor): kotlin.Unit @kotlin.Deprecated(level = DeprecationLevel.HIDDEN, message = "This synthesized declaration should not be used directly", replaceWith = kotlin.ReplaceWith(expression = "", imports = {})) public object `$serializer` : kotlinx.serialization.internal.GeneratedSerializer { private constructor `$serializer`() diff --git a/plugins/kotlinx-serialization/testData/diagnostics/SerializableEnums.txt b/plugins/kotlinx-serialization/testData/diagnostics/SerializableEnums.txt index 5d5acc48126..480e2c0c9b4 100644 --- a/plugins/kotlinx-serialization/testData/diagnostics/SerializableEnums.txt +++ b/plugins/kotlinx-serialization/testData/diagnostics/SerializableEnums.txt @@ -12,7 +12,7 @@ public object EnumSerializer : kotlinx.serialization.KSerializer { private constructor `$serializer`() diff --git a/plugins/kotlinx-serialization/testData/diagnostics/Transients.txt b/plugins/kotlinx-serialization/testData/diagnostics/Transients.txt index 348868f9b60..338ac8ce72c 100644 --- a/plugins/kotlinx-serialization/testData/diagnostics/Transients.txt +++ b/plugins/kotlinx-serialization/testData/diagnostics/Transients.txt @@ -2,7 +2,7 @@ package @kotlinx.serialization.Serializable public final data class WithTransients { public constructor WithTransients(/*0*/ missing: kotlin.Int) - @kotlin.Deprecated(level = DeprecationLevel.HIDDEN, message = "This synthesized declaration should not be used directly", replaceWith = kotlin.ReplaceWith(expression = "", imports = {})) public /*synthesized*/ constructor WithTransients(/*0*/ seen1: kotlin.Int, /*1*/ serializationConstructorMarker: kotlinx.serialization.internal.SerializationConstructorMarker?) + @kotlin.Deprecated(level = DeprecationLevel.HIDDEN, message = "This synthesized declaration should not be used directly", replaceWith = kotlin.ReplaceWith(expression = "", imports = {})) internal /*synthesized*/ constructor WithTransients(/*0*/ seen1: kotlin.Int, /*1*/ serializationConstructorMarker: kotlinx.serialization.internal.SerializationConstructorMarker?) @kotlinx.serialization.Transient public final lateinit var allowTransientLateinitWithoutInitializer: kotlin.String @kotlinx.serialization.Transient public final val missing: kotlin.Int @kotlinx.serialization.Transient public final val redundant: kotlin.Int @@ -11,7 +11,7 @@ package public open override /*1*/ /*synthesized*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean public open override /*1*/ /*synthesized*/ fun hashCode(): kotlin.Int public open override /*1*/ /*synthesized*/ fun toString(): kotlin.String - @kotlin.jvm.JvmStatic public final /*synthesized*/ fun `write$Self`(/*0*/ self: WithTransients, /*1*/ output: kotlinx.serialization.encoding.CompositeEncoder, /*2*/ serialDesc: kotlinx.serialization.descriptors.SerialDescriptor): kotlin.Unit + @kotlin.jvm.JvmStatic internal final /*synthesized*/ fun `write$Self`(/*0*/ self: WithTransients, /*1*/ output: kotlinx.serialization.encoding.CompositeEncoder, /*2*/ serialDesc: kotlinx.serialization.descriptors.SerialDescriptor): kotlin.Unit @kotlin.Deprecated(level = DeprecationLevel.HIDDEN, message = "This synthesized declaration should not be used directly", replaceWith = kotlin.ReplaceWith(expression = "", imports = {})) public object `$serializer` : kotlinx.serialization.internal.GeneratedSerializer { private constructor `$serializer`()