From 205f29128af8bccf6e0d5a4681221341a531e74f Mon Sep 17 00:00:00 2001 From: Leonid Startsev Date: Thu, 23 Apr 2020 16:08:51 +0300 Subject: [PATCH] Updated testdata to a new generation strategy Fix IR generation problems (partially reverts cd931796bc25b5d08670844d23247e2589ec27d7) Regenerate diagnostic testdata according to runtime changes --- .../build.gradle.kts | 2 +- .../compiler/backend/ir/GeneratorHelpers.kt | 16 +- .../backend/ir/SerializerIrGenerator.kt | 5 +- .../testData/codegen/Basic.ir.txt | 209 +++++++++++------- .../testData/codegen/Basic.txt | 72 +++--- .../diagnostics/DuplicateSerialName.txt | 10 +- .../diagnostics/NoSuitableCtorInParent.txt | 5 +- .../testData/diagnostics/NonSerializable.txt | 15 +- .../diagnostics/NullabilityIncompatible.kt | 2 +- .../diagnostics/NullabilityIncompatible.txt | 9 +- .../diagnostics/ParamIsNotProperty.txt | 5 +- .../testData/diagnostics/SerializableEnums.kt | 8 +- .../diagnostics/SerializableEnums.txt | 34 +-- .../testData/diagnostics/Transients.txt | 5 +- tests/mute-common.csv | 1 - 15 files changed, 205 insertions(+), 193 deletions(-) diff --git a/plugins/kotlin-serialization/kotlin-serialization-compiler/build.gradle.kts b/plugins/kotlin-serialization/kotlin-serialization-compiler/build.gradle.kts index 308ad585167..6cc3d6158f8 100644 --- a/plugins/kotlin-serialization/kotlin-serialization-compiler/build.gradle.kts +++ b/plugins/kotlin-serialization/kotlin-serialization-compiler/build.gradle.kts @@ -21,7 +21,7 @@ dependencies { testCompile(projectTests(":compiler:tests-common")) testCompile(commonDep("junit:junit")) - testCompile("org.jetbrains.kotlinx:kotlinx-serialization-runtime:0.11.0") + testImplementation("org.jetbrains.kotlinx:kotlinx-serialization-runtime:0.20.0-1.4.0-dev-5730") { isTransitive = false } testRuntimeOnly(intellijCoreDep()) { includeJars("intellij-core") } diff --git a/plugins/kotlin-serialization/kotlin-serialization-compiler/src/org/jetbrains/kotlinx/serialization/compiler/backend/ir/GeneratorHelpers.kt b/plugins/kotlin-serialization/kotlin-serialization-compiler/src/org/jetbrains/kotlinx/serialization/compiler/backend/ir/GeneratorHelpers.kt index 7f992d1065d..ad1d1035d7b 100644 --- a/plugins/kotlin-serialization/kotlin-serialization-compiler/src/org/jetbrains/kotlinx/serialization/compiler/backend/ir/GeneratorHelpers.kt +++ b/plugins/kotlin-serialization/kotlin-serialization-compiler/src/org/jetbrains/kotlinx/serialization/compiler/backend/ir/GeneratorHelpers.kt @@ -283,9 +283,9 @@ interface IrBuilderExtension { } val fieldSymbol = irProperty.backingField!!.symbol irProperty.getter = propertyDescriptor.getter?.let { generatePropertyAccessor(it, fieldSymbol) } - ?.apply { parent = propertyParent } + ?.apply { parent = propertyParent; correspondingPropertySymbol = irProperty.symbol } irProperty.setter = propertyDescriptor.setter?.let { generatePropertyAccessor(it, fieldSymbol) } - ?.apply { parent = propertyParent } + ?.apply { parent = propertyParent; correspondingPropertySymbol = irProperty.symbol } return irProperty } @@ -517,17 +517,15 @@ interface IrBuilderExtension { nullableSerializerClass: IrClassSymbol ): IrExpression { return if (type.isMarkedNullable) { - val classDeclaration = nullableSerializerClass.owner - val nullableConstructor = classDeclaration.declarations.first { it is IrConstructor } as IrConstructor + val nullableConstructor = + compilerContext.symbolTable.referenceConstructor(nullableSerializerClass.descriptor.constructors.toList().first()) val resultType = type.makeNotNullable() - val typeParameters = classDeclaration.typeParameters - val typeArguments = listOf(resultType.toIrType()) irInvoke( - null, nullableConstructor.symbol, - typeArguments = typeArguments, + null, nullableConstructor, + typeArguments = listOf(resultType.toIrType()), valueArguments = listOf(expression), // Return type should be correctly substituted - returnTypeHint = nullableConstructor.returnType.substitute(typeParameters, typeArguments) + returnTypeHint = nullableConstructor.descriptor.returnType.replace(listOf(resultType.asTypeProjection())).toIrType() ) } else { expression diff --git a/plugins/kotlin-serialization/kotlin-serialization-compiler/src/org/jetbrains/kotlinx/serialization/compiler/backend/ir/SerializerIrGenerator.kt b/plugins/kotlin-serialization/kotlin-serialization-compiler/src/org/jetbrains/kotlinx/serialization/compiler/backend/ir/SerializerIrGenerator.kt index 4b5bbd00e1b..29abba9074f 100644 --- a/plugins/kotlin-serialization/kotlin-serialization-compiler/src/org/jetbrains/kotlinx/serialization/compiler/backend/ir/SerializerIrGenerator.kt +++ b/plugins/kotlin-serialization/kotlin-serialization-compiler/src/org/jetbrains/kotlinx/serialization/compiler/backend/ir/SerializerIrGenerator.kt @@ -232,7 +232,7 @@ open class SerializerIrGenerator(val irClass: IrClass, final override val compil // fun beginStructure(desc: SerialDescriptor, vararg typeParams: KSerializer<*>): StructureEncoder val beginFunc = encoderClass.referenceMethod(CallingConventions.begin) { it.valueParameters.size == 1 } - val call = irCall(beginFunc, type = beginFunc.owner.returnType).mapValueParametersIndexed { _, _ -> + val call = irCall(beginFunc, type = kOutputClass.defaultType.toIrType()).mapValueParametersIndexed { _, _ -> irGet(localSerialDesc) } // can it be done in more concise way? e.g. additional builder function? @@ -365,7 +365,8 @@ open class SerializerIrGenerator(val irClass: IrClass, final override val compil val call = irInvoke( irGet(loadFunc.valueParameters[0]), beginFunc, - irGet(localSerialDesc) + irGet(localSerialDesc), + typeHint = inputClass.defaultType.toIrType() ) val localInput = irTemporary(call, "input") diff --git a/plugins/kotlin-serialization/kotlin-serialization-compiler/testData/codegen/Basic.ir.txt b/plugins/kotlin-serialization/kotlin-serialization-compiler/testData/codegen/Basic.ir.txt index 1749899ee82..4e6e8a0be47 100644 --- a/plugins/kotlin-serialization/kotlin-serialization-compiler/testData/codegen/Basic.ir.txt +++ b/plugins/kotlin-serialization/kotlin-serialization-compiler/testData/codegen/Basic.ir.txt @@ -3,7 +3,7 @@ public final class ListOfUsers$$serializer : java/lang/Object, kotlinx/serializa public final static kotlinx.serialization.SerialDescriptor descriptor - public final static void () { + static void () { NEW DUP INVOKESPECIAL (ListOfUsers$$serializer, , ()V) @@ -22,7 +22,8 @@ public final class ListOfUsers$$serializer : java/lang/Object, kotlinx/serializa LDC (ListOfUsers) ALOAD (0) CHECKCAST - INVOKESPECIAL (kotlinx/serialization/internal/SerialClassDescImpl, , (Ljava/lang/String;Lkotlinx/serialization/internal/GeneratedSerializer;)V) + ICONST_1 + INVOKESPECIAL (kotlinx/serialization/internal/SerialClassDescImpl, , (Ljava/lang/String;Lkotlinx/serialization/internal/GeneratedSerializer;I)V) ASTORE (1) ALOAD (1) LDC (list) @@ -48,6 +49,7 @@ public final class ListOfUsers$$serializer : java/lang/Object, kotlinx/serializa GETSTATIC (INSTANCE, LUser$$serializer;) CHECKCAST INVOKESPECIAL (kotlinx/serialization/internal/ArrayListSerializer, , (Lkotlinx/serialization/KSerializer;)V) + CHECKCAST AASTORE ALOAD (1) ARETURN @@ -58,7 +60,7 @@ public final class ListOfUsers$$serializer : java/lang/Object, kotlinx/serializa LABEL (L0) ALOAD (1) LDC (decoder) - INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkParameterIsNotNull, (Ljava/lang/Object;Ljava/lang/String;)V) + INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V) LABEL (L1) LINENUMBER (12) ALOAD (0) @@ -74,10 +76,28 @@ public final class ListOfUsers$$serializer : java/lang/Object, kotlinx/serializa ASTORE (6) ALOAD (1) ALOAD (2) - ICONST_0 - ANEWARRAY - INVOKEINTERFACE (kotlinx/serialization/Decoder, beginStructure, (Lkotlinx/serialization/SerialDescriptor;[Lkotlinx/serialization/KSerializer;)Lkotlinx/serialization/CompositeDecoder;) + INVOKEINTERFACE (kotlinx/serialization/Decoder, beginStructure, (Lkotlinx/serialization/SerialDescriptor;)Lkotlinx/serialization/CompositeDecoder;) ASTORE (7) + ALOAD (7) + INVOKEINTERFACE (kotlinx/serialization/CompositeDecoder, decodeSequentially, ()Z) + IFEQ (L2) + ALOAD (7) + ALOAD (2) + ICONST_0 + NEW + DUP + GETSTATIC (INSTANCE, LUser$$serializer;) + CHECKCAST + INVOKESPECIAL (kotlinx/serialization/internal/ArrayListSerializer, , (Lkotlinx/serialization/KSerializer;)V) + CHECKCAST + ALOAD (6) + INVOKEINTERFACE (kotlinx/serialization/CompositeDecoder, decodeSerializableElement, (Lkotlinx/serialization/SerialDescriptor;ILkotlinx/serialization/DeserializationStrategy;Ljava/lang/Object;)Ljava/lang/Object;) + ASTORE (6) + ILOAD (5) + ICONST_1 + IOR + ISTORE (5) + GOTO (L3) LABEL (L2) ILOAD (3) IFEQ (L3) @@ -101,9 +121,8 @@ public final class ListOfUsers$$serializer : java/lang/Object, kotlinx/serializa CHECKCAST INVOKESPECIAL (kotlinx/serialization/internal/ArrayListSerializer, , (Lkotlinx/serialization/KSerializer;)V) CHECKCAST - INVOKEINTERFACE (kotlinx/serialization/CompositeDecoder, decodeSerializableElement, (Lkotlinx/serialization/SerialDescriptor;ILkotlinx/serialization/DeserializationStrategy;)Ljava/lang/Object;) - CHECKCAST - CHECKCAST + ALOAD (6) + INVOKEINTERFACE (kotlinx/serialization/CompositeDecoder, decodeSerializableElement, (Lkotlinx/serialization/SerialDescriptor;ILkotlinx/serialization/DeserializationStrategy;Ljava/lang/Object;)Ljava/lang/Object;) ASTORE (6) ILOAD (5) ICONST_1 @@ -137,7 +156,7 @@ public final class ListOfUsers$$serializer : java/lang/Object, kotlinx/serializa LABEL (L9) } - public java.lang.Object deserialize(kotlinx.serialization.Decoder p0) { + public java.lang.Object deserialize(kotlinx.serialization.Decoder decoder) { LABEL (L0) ALOAD (0) ALOAD (1) @@ -150,16 +169,16 @@ public final class ListOfUsers$$serializer : java/lang/Object, kotlinx/serializa public ListOfUsers patch(kotlinx.serialization.Decoder decoder, ListOfUsers old) - public java.lang.Object patch(kotlinx.serialization.Decoder p0, java.lang.Object p1) + public java.lang.Object patch(kotlinx.serialization.Decoder decoder, java.lang.Object old) - public void serialize(kotlinx.serialization.Encoder encoder, ListOfUsers obj) { + public void serialize(kotlinx.serialization.Encoder encoder, ListOfUsers value) { LABEL (L0) ALOAD (1) LDC (encoder) - INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkParameterIsNotNull, (Ljava/lang/Object;Ljava/lang/String;)V) + INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V) ALOAD (2) - LDC (obj) - INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkParameterIsNotNull, (Ljava/lang/Object;Ljava/lang/String;)V) + LDC (value) + INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V) LABEL (L1) LINENUMBER (12) ALOAD (0) @@ -167,9 +186,7 @@ public final class ListOfUsers$$serializer : java/lang/Object, kotlinx/serializa ASTORE (3) ALOAD (1) ALOAD (3) - ICONST_0 - ANEWARRAY - INVOKEINTERFACE (kotlinx/serialization/Encoder, beginStructure, (Lkotlinx/serialization/SerialDescriptor;[Lkotlinx/serialization/KSerializer;)Lkotlinx/serialization/CompositeEncoder;) + INVOKEINTERFACE (kotlinx/serialization/Encoder, beginStructure, (Lkotlinx/serialization/SerialDescriptor;)Lkotlinx/serialization/CompositeEncoder;) ASTORE (4) ALOAD (4) ALOAD (3) @@ -181,7 +198,7 @@ public final class ListOfUsers$$serializer : java/lang/Object, kotlinx/serializa INVOKESPECIAL (kotlinx/serialization/internal/ArrayListSerializer, , (Lkotlinx/serialization/KSerializer;)V) CHECKCAST ALOAD (2) - INVOKESTATIC (ListOfUsers, access$prop$getList$3, (LListOfUsers;)Ljava/util/List;) + INVOKESTATIC (ListOfUsers, access$getList$p, (LListOfUsers;)Ljava/util/List;) INVOKEINTERFACE (kotlinx/serialization/CompositeEncoder, encodeSerializableElement, (Lkotlinx/serialization/SerialDescriptor;ILkotlinx/serialization/SerializationStrategy;Ljava/lang/Object;)V) ALOAD (4) ALOAD (3) @@ -192,7 +209,7 @@ public final class ListOfUsers$$serializer : java/lang/Object, kotlinx/serializa LABEL (L3) } - public void serialize(kotlinx.serialization.Encoder p0, java.lang.Object p1) { + public void serialize(kotlinx.serialization.Encoder encoder, java.lang.Object value) { LABEL (L0) ALOAD (0) ALOAD (1) @@ -202,6 +219,8 @@ public final class ListOfUsers$$serializer : java/lang/Object, kotlinx/serializa RETURN LABEL (L1) } + + public kotlinx.serialization.KSerializer[] typeParametersSerializers() } public final class ListOfUsers$Companion : java/lang/Object { @@ -215,7 +234,7 @@ public final class ListOfUsers$Companion : java/lang/Object { LABEL (L2) } - public void (kotlin.jvm.internal.DefaultConstructorMarker p0) { + public void (kotlin.jvm.internal.DefaultConstructorMarker $constructor_marker) { LABEL (L0) ALOAD (0) INVOKESPECIAL (ListOfUsers$Companion, , ()V) @@ -231,7 +250,7 @@ public final class ListOfUsers : java/lang/Object { private final java.util.List list - public final static void () { + static void () { NEW DUP ACONST_NULL @@ -244,7 +263,7 @@ public final class ListOfUsers : java/lang/Object { LABEL (L0) ALOAD (1) LDC (list) - INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkParameterIsNotNull, (Ljava/lang/Object;Ljava/lang/String;)V) + INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V) ALOAD (0) LABEL (L1) LINENUMBER (12) @@ -284,7 +303,7 @@ public final class ListOfUsers : java/lang/Object { LABEL (L4) } - public final static java.util.List access$prop$getList$3(ListOfUsers p0) + public final static java.util.List access$getList$p(ListOfUsers $this) public final java.util.List getList() } @@ -294,7 +313,7 @@ public final class OptionalUser$$serializer : java/lang/Object, kotlinx/serializ public final static kotlinx.serialization.SerialDescriptor descriptor - public final static void () { + static void () { NEW DUP INVOKESPECIAL (OptionalUser$$serializer, , ()V) @@ -313,7 +332,8 @@ public final class OptionalUser$$serializer : java/lang/Object, kotlinx/serializ LDC (OptionalUser) ALOAD (0) CHECKCAST - INVOKESPECIAL (kotlinx/serialization/internal/SerialClassDescImpl, , (Ljava/lang/String;Lkotlinx/serialization/internal/GeneratedSerializer;)V) + ICONST_1 + INVOKESPECIAL (kotlinx/serialization/internal/SerialClassDescImpl, , (Ljava/lang/String;Lkotlinx/serialization/internal/GeneratedSerializer;I)V) ASTORE (1) ALOAD (1) LDC (user) @@ -346,7 +366,7 @@ public final class OptionalUser$$serializer : java/lang/Object, kotlinx/serializ LABEL (L0) ALOAD (1) LDC (decoder) - INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkParameterIsNotNull, (Ljava/lang/Object;Ljava/lang/String;)V) + INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V) LABEL (L1) LINENUMBER (9) ALOAD (0) @@ -362,10 +382,24 @@ public final class OptionalUser$$serializer : java/lang/Object, kotlinx/serializ ASTORE (6) ALOAD (1) ALOAD (2) - ICONST_0 - ANEWARRAY - INVOKEINTERFACE (kotlinx/serialization/Decoder, beginStructure, (Lkotlinx/serialization/SerialDescriptor;[Lkotlinx/serialization/KSerializer;)Lkotlinx/serialization/CompositeDecoder;) + INVOKEINTERFACE (kotlinx/serialization/Decoder, beginStructure, (Lkotlinx/serialization/SerialDescriptor;)Lkotlinx/serialization/CompositeDecoder;) ASTORE (7) + ALOAD (7) + INVOKEINTERFACE (kotlinx/serialization/CompositeDecoder, decodeSequentially, ()Z) + IFEQ (L2) + ALOAD (7) + ALOAD (2) + ICONST_0 + GETSTATIC (INSTANCE, LUser$$serializer;) + CHECKCAST + ALOAD (6) + INVOKEINTERFACE (kotlinx/serialization/CompositeDecoder, decodeSerializableElement, (Lkotlinx/serialization/SerialDescriptor;ILkotlinx/serialization/DeserializationStrategy;Ljava/lang/Object;)Ljava/lang/Object;) + ASTORE (6) + ILOAD (5) + ICONST_1 + IOR + ISTORE (5) + GOTO (L3) LABEL (L2) ILOAD (3) IFEQ (L3) @@ -385,9 +419,8 @@ public final class OptionalUser$$serializer : java/lang/Object, kotlinx/serializ ICONST_0 GETSTATIC (INSTANCE, LUser$$serializer;) CHECKCAST - INVOKEINTERFACE (kotlinx/serialization/CompositeDecoder, decodeSerializableElement, (Lkotlinx/serialization/SerialDescriptor;ILkotlinx/serialization/DeserializationStrategy;)Ljava/lang/Object;) - CHECKCAST - CHECKCAST + ALOAD (6) + INVOKEINTERFACE (kotlinx/serialization/CompositeDecoder, decodeSerializableElement, (Lkotlinx/serialization/SerialDescriptor;ILkotlinx/serialization/DeserializationStrategy;Ljava/lang/Object;)Ljava/lang/Object;) ASTORE (6) ILOAD (5) ICONST_1 @@ -421,7 +454,7 @@ public final class OptionalUser$$serializer : java/lang/Object, kotlinx/serializ LABEL (L9) } - public java.lang.Object deserialize(kotlinx.serialization.Decoder p0) { + public java.lang.Object deserialize(kotlinx.serialization.Decoder decoder) { LABEL (L0) ALOAD (0) ALOAD (1) @@ -434,16 +467,16 @@ public final class OptionalUser$$serializer : java/lang/Object, kotlinx/serializ public OptionalUser patch(kotlinx.serialization.Decoder decoder, OptionalUser old) - public java.lang.Object patch(kotlinx.serialization.Decoder p0, java.lang.Object p1) + public java.lang.Object patch(kotlinx.serialization.Decoder decoder, java.lang.Object old) - public void serialize(kotlinx.serialization.Encoder encoder, OptionalUser obj) { + public void serialize(kotlinx.serialization.Encoder encoder, OptionalUser value) { LABEL (L0) ALOAD (1) LDC (encoder) - INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkParameterIsNotNull, (Ljava/lang/Object;Ljava/lang/String;)V) + INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V) ALOAD (2) - LDC (obj) - INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkParameterIsNotNull, (Ljava/lang/Object;Ljava/lang/String;)V) + LDC (value) + INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V) LABEL (L1) LINENUMBER (9) ALOAD (0) @@ -451,12 +484,10 @@ public final class OptionalUser$$serializer : java/lang/Object, kotlinx/serializ ASTORE (3) ALOAD (1) ALOAD (3) - ICONST_0 - ANEWARRAY - INVOKEINTERFACE (kotlinx/serialization/Encoder, beginStructure, (Lkotlinx/serialization/SerialDescriptor;[Lkotlinx/serialization/KSerializer;)Lkotlinx/serialization/CompositeEncoder;) + INVOKEINTERFACE (kotlinx/serialization/Encoder, beginStructure, (Lkotlinx/serialization/SerialDescriptor;)Lkotlinx/serialization/CompositeEncoder;) ASTORE (4) ALOAD (2) - INVOKESTATIC (OptionalUser, access$prop$getUser$2, (LOptionalUser;)LUser;) + INVOKESTATIC (OptionalUser, access$getUser$p, (LOptionalUser;)LUser;) NEW DUP LABEL (L2) @@ -483,7 +514,7 @@ public final class OptionalUser$$serializer : java/lang/Object, kotlinx/serializ GETSTATIC (INSTANCE, LUser$$serializer;) CHECKCAST ALOAD (2) - INVOKESTATIC (OptionalUser, access$prop$getUser$2, (LOptionalUser;)LUser;) + INVOKESTATIC (OptionalUser, access$getUser$p, (LOptionalUser;)LUser;) INVOKEINTERFACE (kotlinx/serialization/CompositeEncoder, encodeSerializableElement, (Lkotlinx/serialization/SerialDescriptor;ILkotlinx/serialization/SerializationStrategy;Ljava/lang/Object;)V) LABEL (L6) ALOAD (4) @@ -495,7 +526,7 @@ public final class OptionalUser$$serializer : java/lang/Object, kotlinx/serializ LABEL (L8) } - public void serialize(kotlinx.serialization.Encoder p0, java.lang.Object p1) { + public void serialize(kotlinx.serialization.Encoder encoder, java.lang.Object value) { LABEL (L0) ALOAD (0) ALOAD (1) @@ -505,6 +536,8 @@ public final class OptionalUser$$serializer : java/lang/Object, kotlinx/serializ RETURN LABEL (L1) } + + public kotlinx.serialization.KSerializer[] typeParametersSerializers() } public final class OptionalUser$Companion : java/lang/Object { @@ -518,7 +551,7 @@ public final class OptionalUser$Companion : java/lang/Object { LABEL (L2) } - public void (kotlin.jvm.internal.DefaultConstructorMarker p0) { + public void (kotlin.jvm.internal.DefaultConstructorMarker $constructor_marker) { LABEL (L0) ALOAD (0) INVOKESPECIAL (OptionalUser$Companion, , ()V) @@ -534,7 +567,7 @@ public final class OptionalUser : java/lang/Object { private final User user - public final static void () { + static void () { NEW DUP ACONST_NULL @@ -547,7 +580,7 @@ public final class OptionalUser : java/lang/Object { LABEL (L0) ALOAD (1) LDC (user) - INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkParameterIsNotNull, (Ljava/lang/Object;Ljava/lang/String;)V) + INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V) ALOAD (0) LABEL (L1) LINENUMBER (9) @@ -561,7 +594,7 @@ public final class OptionalUser : java/lang/Object { LABEL (L3) } - public void (User user, int p1, kotlin.jvm.internal.DefaultConstructorMarker p2) { + public void (User p0, int p1, kotlin.jvm.internal.DefaultConstructorMarker p2) { LABEL (L0) LINENUMBER (10) ILOAD (2) @@ -579,7 +612,6 @@ public final class OptionalUser : java/lang/Object { ALOAD (1) INVOKESPECIAL (OptionalUser, , (LUser;)V) RETURN - LABEL (L2) } public void (int seen1, User user, kotlinx.serialization.SerializationConstructorMarker serializationConstructorMarker) { @@ -625,7 +657,7 @@ public final class OptionalUser : java/lang/Object { LABEL (L1) } - public final static User access$prop$getUser$2(OptionalUser p0) + public final static User access$getUser$p(OptionalUser $this) public final User getUser() } @@ -635,7 +667,7 @@ public final class User$$serializer : java/lang/Object, kotlinx/serialization/in public final static kotlinx.serialization.SerialDescriptor descriptor - public final static void () { + static void () { NEW DUP INVOKESPECIAL (User$$serializer, , ()V) @@ -654,7 +686,8 @@ public final class User$$serializer : java/lang/Object, kotlinx/serialization/in LDC (User) ALOAD (0) CHECKCAST - INVOKESPECIAL (kotlinx/serialization/internal/SerialClassDescImpl, , (Ljava/lang/String;Lkotlinx/serialization/internal/GeneratedSerializer;)V) + ICONST_2 + INVOKESPECIAL (kotlinx/serialization/internal/SerialClassDescImpl, , (Ljava/lang/String;Lkotlinx/serialization/internal/GeneratedSerializer;I)V) ASTORE (1) ALOAD (1) LDC (firstName) @@ -696,7 +729,7 @@ public final class User$$serializer : java/lang/Object, kotlinx/serialization/in LABEL (L0) ALOAD (1) LDC (decoder) - INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkParameterIsNotNull, (Ljava/lang/Object;Ljava/lang/String;)V) + INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V) LABEL (L1) LINENUMBER (6) ALOAD (0) @@ -714,10 +747,30 @@ public final class User$$serializer : java/lang/Object, kotlinx/serialization/in ASTORE (7) ALOAD (1) ALOAD (2) - ICONST_0 - ANEWARRAY - INVOKEINTERFACE (kotlinx/serialization/Decoder, beginStructure, (Lkotlinx/serialization/SerialDescriptor;[Lkotlinx/serialization/KSerializer;)Lkotlinx/serialization/CompositeDecoder;) + INVOKEINTERFACE (kotlinx/serialization/Decoder, beginStructure, (Lkotlinx/serialization/SerialDescriptor;)Lkotlinx/serialization/CompositeDecoder;) ASTORE (8) + ALOAD (8) + INVOKEINTERFACE (kotlinx/serialization/CompositeDecoder, decodeSequentially, ()Z) + IFEQ (L2) + ALOAD (8) + ALOAD (2) + ICONST_0 + INVOKEINTERFACE (kotlinx/serialization/CompositeDecoder, decodeStringElement, (Lkotlinx/serialization/SerialDescriptor;I)Ljava/lang/String;) + ASTORE (6) + ILOAD (5) + ICONST_1 + IOR + ISTORE (5) + ALOAD (8) + ALOAD (2) + ICONST_1 + INVOKEINTERFACE (kotlinx/serialization/CompositeDecoder, decodeStringElement, (Lkotlinx/serialization/SerialDescriptor;I)Ljava/lang/String;) + ASTORE (7) + ILOAD (5) + ICONST_2 + IOR + ISTORE (5) + GOTO (L3) LABEL (L2) ILOAD (3) IFEQ (L3) @@ -736,7 +789,6 @@ public final class User$$serializer : java/lang/Object, kotlinx/serialization/in ALOAD (2) ICONST_0 INVOKEINTERFACE (kotlinx/serialization/CompositeDecoder, decodeStringElement, (Lkotlinx/serialization/SerialDescriptor;I)Ljava/lang/String;) - CHECKCAST ASTORE (6) ILOAD (5) ICONST_1 @@ -748,7 +800,6 @@ public final class User$$serializer : java/lang/Object, kotlinx/serialization/in ALOAD (2) ICONST_1 INVOKEINTERFACE (kotlinx/serialization/CompositeDecoder, decodeStringElement, (Lkotlinx/serialization/SerialDescriptor;I)Ljava/lang/String;) - CHECKCAST ASTORE (7) ILOAD (5) ICONST_2 @@ -774,9 +825,7 @@ public final class User$$serializer : java/lang/Object, kotlinx/serialization/in DUP ILOAD (5) ALOAD (6) - CHECKCAST ALOAD (7) - CHECKCAST ACONST_NULL CHECKCAST INVOKESPECIAL (User, , (ILjava/lang/String;Ljava/lang/String;Lkotlinx/serialization/SerializationConstructorMarker;)V) @@ -784,7 +833,7 @@ public final class User$$serializer : java/lang/Object, kotlinx/serialization/in LABEL (L10) } - public java.lang.Object deserialize(kotlinx.serialization.Decoder p0) { + public java.lang.Object deserialize(kotlinx.serialization.Decoder decoder) { LABEL (L0) ALOAD (0) ALOAD (1) @@ -797,16 +846,16 @@ public final class User$$serializer : java/lang/Object, kotlinx/serialization/in public User patch(kotlinx.serialization.Decoder decoder, User old) - public java.lang.Object patch(kotlinx.serialization.Decoder p0, java.lang.Object p1) + public java.lang.Object patch(kotlinx.serialization.Decoder decoder, java.lang.Object old) - public void serialize(kotlinx.serialization.Encoder encoder, User obj) { + public void serialize(kotlinx.serialization.Encoder encoder, User value) { LABEL (L0) ALOAD (1) LDC (encoder) - INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkParameterIsNotNull, (Ljava/lang/Object;Ljava/lang/String;)V) + INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V) ALOAD (2) - LDC (obj) - INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkParameterIsNotNull, (Ljava/lang/Object;Ljava/lang/String;)V) + LDC (value) + INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V) LABEL (L1) LINENUMBER (6) ALOAD (0) @@ -814,21 +863,19 @@ public final class User$$serializer : java/lang/Object, kotlinx/serialization/in ASTORE (3) ALOAD (1) ALOAD (3) - ICONST_0 - ANEWARRAY - INVOKEINTERFACE (kotlinx/serialization/Encoder, beginStructure, (Lkotlinx/serialization/SerialDescriptor;[Lkotlinx/serialization/KSerializer;)Lkotlinx/serialization/CompositeEncoder;) + INVOKEINTERFACE (kotlinx/serialization/Encoder, beginStructure, (Lkotlinx/serialization/SerialDescriptor;)Lkotlinx/serialization/CompositeEncoder;) ASTORE (4) ALOAD (4) ALOAD (3) ICONST_0 ALOAD (2) - INVOKESTATIC (User, access$prop$getFirstName$0, (LUser;)Ljava/lang/String;) + INVOKESTATIC (User, access$getFirstName$p, (LUser;)Ljava/lang/String;) INVOKEINTERFACE (kotlinx/serialization/CompositeEncoder, encodeStringElement, (Lkotlinx/serialization/SerialDescriptor;ILjava/lang/String;)V) ALOAD (4) ALOAD (3) ICONST_1 ALOAD (2) - INVOKESTATIC (User, access$prop$getLastName$1, (LUser;)Ljava/lang/String;) + INVOKESTATIC (User, access$getLastName$p, (LUser;)Ljava/lang/String;) INVOKEINTERFACE (kotlinx/serialization/CompositeEncoder, encodeStringElement, (Lkotlinx/serialization/SerialDescriptor;ILjava/lang/String;)V) ALOAD (4) ALOAD (3) @@ -839,7 +886,7 @@ public final class User$$serializer : java/lang/Object, kotlinx/serialization/in LABEL (L3) } - public void serialize(kotlinx.serialization.Encoder p0, java.lang.Object p1) { + public void serialize(kotlinx.serialization.Encoder encoder, java.lang.Object value) { LABEL (L0) ALOAD (0) ALOAD (1) @@ -849,6 +896,8 @@ public final class User$$serializer : java/lang/Object, kotlinx/serialization/in RETURN LABEL (L1) } + + public kotlinx.serialization.KSerializer[] typeParametersSerializers() } public final class User$Companion : java/lang/Object { @@ -862,7 +911,7 @@ public final class User$Companion : java/lang/Object { LABEL (L2) } - public void (kotlin.jvm.internal.DefaultConstructorMarker p0) { + public void (kotlin.jvm.internal.DefaultConstructorMarker $constructor_marker) { LABEL (L0) ALOAD (0) INVOKESPECIAL (User$Companion, , ()V) @@ -880,7 +929,7 @@ public final class User : java/lang/Object { private final java.lang.String lastName - public final static void () { + static void () { NEW DUP ACONST_NULL @@ -893,10 +942,10 @@ public final class User : java/lang/Object { LABEL (L0) ALOAD (1) LDC (firstName) - INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkParameterIsNotNull, (Ljava/lang/Object;Ljava/lang/String;)V) + INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V) ALOAD (2) LDC (lastName) - INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkParameterIsNotNull, (Ljava/lang/Object;Ljava/lang/String;)V) + INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V) ALOAD (0) LABEL (L1) LINENUMBER (6) @@ -956,11 +1005,11 @@ public final class User : java/lang/Object { LABEL (L6) } - public final static java.lang.String access$prop$getFirstName$0(User p0) + public final static java.lang.String access$getFirstName$p(User $this) - public final static java.lang.String access$prop$getLastName$1(User p0) + public final static java.lang.String access$getLastName$p(User $this) public final java.lang.String getFirstName() public final java.lang.String getLastName() -} \ No newline at end of file +} diff --git a/plugins/kotlin-serialization/kotlin-serialization-compiler/testData/codegen/Basic.txt b/plugins/kotlin-serialization/kotlin-serialization-compiler/testData/codegen/Basic.txt index 48aad25beb7..b225f6bb061 100644 --- a/plugins/kotlin-serialization/kotlin-serialization-compiler/testData/codegen/Basic.txt +++ b/plugins/kotlin-serialization/kotlin-serialization-compiler/testData/codegen/Basic.txt @@ -67,9 +67,7 @@ public final class ListOfUsers$$serializer : java/lang/Object, kotlinx/serializa ASTORE (5) ALOAD (1) ALOAD (2) - ICONST_0 - ANEWARRAY - INVOKEINTERFACE (kotlinx/serialization/Decoder, beginStructure, (Lkotlinx/serialization/SerialDescriptor;[Lkotlinx/serialization/KSerializer;)Lkotlinx/serialization/CompositeDecoder;) + INVOKEINTERFACE (kotlinx/serialization/Decoder, beginStructure, (Lkotlinx/serialization/SerialDescriptor;)Lkotlinx/serialization/CompositeDecoder;) ASTORE (1) ALOAD (1) INVOKEINTERFACE (kotlinx/serialization/CompositeDecoder, decodeSequentially, ()Z) @@ -104,16 +102,8 @@ public final class ListOfUsers$$serializer : java/lang/Object, kotlinx/serializa GETSTATIC (INSTANCE, LUser$$serializer;) CHECKCAST INVOKESPECIAL (kotlinx/serialization/internal/ArrayListSerializer, , (Lkotlinx/serialization/KSerializer;)V) - ILOAD (4) - ICONST_1 - IAND - IFEQ (L4) ALOAD (5) - INVOKEINTERFACE (kotlinx/serialization/CompositeDecoder, updateSerializableElement, (Lkotlinx/serialization/SerialDescriptor;ILkotlinx/serialization/DeserializationStrategy;Ljava/lang/Object;)Ljava/lang/Object;) - GOTO (L5) - LABEL (L4) - INVOKEINTERFACE (kotlinx/serialization/CompositeDecoder, decodeSerializableElement, (Lkotlinx/serialization/SerialDescriptor;ILkotlinx/serialization/DeserializationStrategy;)Ljava/lang/Object;) - LABEL (L5) + INVOKEINTERFACE (kotlinx/serialization/CompositeDecoder, decodeSerializableElement, (Lkotlinx/serialization/SerialDescriptor;ILkotlinx/serialization/DeserializationStrategy;Ljava/lang/Object;)Ljava/lang/Object;) CHECKCAST ASTORE (5) ILOAD (4) @@ -132,14 +122,14 @@ public final class ListOfUsers$$serializer : java/lang/Object, kotlinx/serializa ACONST_NULL INVOKESPECIAL (ListOfUsers, , (ILjava/util/List;Lkotlinx/serialization/SerializationConstructorMarker;)V) ARETURN - LABEL (L6) + LABEL (L4) NEW DUP ILOAD (3) INVOKESPECIAL (kotlinx/serialization/UnknownFieldException, , (I)V) CHECKCAST ATHROW - LABEL (L7) + LABEL (L5) } public java.lang.Object deserialize(kotlinx.serialization.Decoder p0) { @@ -157,21 +147,19 @@ public final class ListOfUsers$$serializer : java/lang/Object, kotlinx/serializa public java.lang.Object patch(kotlinx.serialization.Decoder p0, java.lang.Object p1) - public void serialize(kotlinx.serialization.Encoder encoder, ListOfUsers obj) { + public void serialize(kotlinx.serialization.Encoder encoder, ListOfUsers value) { LABEL (L0) ALOAD (1) LDC (encoder) INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V) ALOAD (2) - LDC (obj) + LDC (value) INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V) GETSTATIC ($$serialDesc, Lkotlinx/serialization/SerialDescriptor;) ASTORE (3) ALOAD (1) ALOAD (3) - ICONST_0 - ANEWARRAY - INVOKEINTERFACE (kotlinx/serialization/Encoder, beginStructure, (Lkotlinx/serialization/SerialDescriptor;[Lkotlinx/serialization/KSerializer;)Lkotlinx/serialization/CompositeEncoder;) + INVOKEINTERFACE (kotlinx/serialization/Encoder, beginStructure, (Lkotlinx/serialization/SerialDescriptor;)Lkotlinx/serialization/CompositeEncoder;) ASTORE (1) ALOAD (2) ALOAD (1) @@ -194,6 +182,8 @@ public final class ListOfUsers$$serializer : java/lang/Object, kotlinx/serializa INVOKEVIRTUAL (ListOfUsers$$serializer, serialize, (Lkotlinx/serialization/Encoder;LListOfUsers;)V) RETURN } + + public kotlinx.serialization.KSerializer[] typeParametersSerializers() } public final class ListOfUsers$Companion : java/lang/Object { @@ -365,9 +355,7 @@ public final class OptionalUser$$serializer : java/lang/Object, kotlinx/serializ ASTORE (5) ALOAD (1) ALOAD (2) - ICONST_0 - ANEWARRAY - INVOKEINTERFACE (kotlinx/serialization/Decoder, beginStructure, (Lkotlinx/serialization/SerialDescriptor;[Lkotlinx/serialization/KSerializer;)Lkotlinx/serialization/CompositeDecoder;) + INVOKEINTERFACE (kotlinx/serialization/Decoder, beginStructure, (Lkotlinx/serialization/SerialDescriptor;)Lkotlinx/serialization/CompositeDecoder;) ASTORE (1) ALOAD (1) INVOKEINTERFACE (kotlinx/serialization/CompositeDecoder, decodeSequentially, ()Z) @@ -396,16 +384,8 @@ public final class OptionalUser$$serializer : java/lang/Object, kotlinx/serializ ICONST_0 GETSTATIC (INSTANCE, LUser$$serializer;) CHECKCAST - ILOAD (4) - ICONST_1 - IAND - IFEQ (L4) ALOAD (5) - INVOKEINTERFACE (kotlinx/serialization/CompositeDecoder, updateSerializableElement, (Lkotlinx/serialization/SerialDescriptor;ILkotlinx/serialization/DeserializationStrategy;Ljava/lang/Object;)Ljava/lang/Object;) - GOTO (L5) - LABEL (L4) - INVOKEINTERFACE (kotlinx/serialization/CompositeDecoder, decodeSerializableElement, (Lkotlinx/serialization/SerialDescriptor;ILkotlinx/serialization/DeserializationStrategy;)Ljava/lang/Object;) - LABEL (L5) + INVOKEINTERFACE (kotlinx/serialization/CompositeDecoder, decodeSerializableElement, (Lkotlinx/serialization/SerialDescriptor;ILkotlinx/serialization/DeserializationStrategy;Ljava/lang/Object;)Ljava/lang/Object;) CHECKCAST ASTORE (5) ILOAD (4) @@ -424,14 +404,14 @@ public final class OptionalUser$$serializer : java/lang/Object, kotlinx/serializ ACONST_NULL INVOKESPECIAL (OptionalUser, , (ILUser;Lkotlinx/serialization/SerializationConstructorMarker;)V) ARETURN - LABEL (L6) + LABEL (L4) NEW DUP ILOAD (3) INVOKESPECIAL (kotlinx/serialization/UnknownFieldException, , (I)V) CHECKCAST ATHROW - LABEL (L7) + LABEL (L5) } public java.lang.Object deserialize(kotlinx.serialization.Decoder p0) { @@ -449,21 +429,19 @@ public final class OptionalUser$$serializer : java/lang/Object, kotlinx/serializ public java.lang.Object patch(kotlinx.serialization.Decoder p0, java.lang.Object p1) - public void serialize(kotlinx.serialization.Encoder encoder, OptionalUser obj) { + public void serialize(kotlinx.serialization.Encoder encoder, OptionalUser value) { LABEL (L0) ALOAD (1) LDC (encoder) INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V) ALOAD (2) - LDC (obj) + LDC (value) INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V) GETSTATIC ($$serialDesc, Lkotlinx/serialization/SerialDescriptor;) ASTORE (3) ALOAD (1) ALOAD (3) - ICONST_0 - ANEWARRAY - INVOKEINTERFACE (kotlinx/serialization/Encoder, beginStructure, (Lkotlinx/serialization/SerialDescriptor;[Lkotlinx/serialization/KSerializer;)Lkotlinx/serialization/CompositeEncoder;) + INVOKEINTERFACE (kotlinx/serialization/Encoder, beginStructure, (Lkotlinx/serialization/SerialDescriptor;)Lkotlinx/serialization/CompositeEncoder;) ASTORE (1) ALOAD (2) ALOAD (1) @@ -486,6 +464,8 @@ public final class OptionalUser$$serializer : java/lang/Object, kotlinx/serializ INVOKEVIRTUAL (OptionalUser$$serializer, serialize, (Lkotlinx/serialization/Encoder;LOptionalUser;)V) RETURN } + + public kotlinx.serialization.KSerializer[] typeParametersSerializers() } public final class OptionalUser$Companion : java/lang/Object { @@ -719,9 +699,7 @@ public final class User$$serializer : java/lang/Object, kotlinx/serialization/in ASTORE (6) ALOAD (1) ALOAD (2) - ICONST_0 - ANEWARRAY - INVOKEINTERFACE (kotlinx/serialization/Decoder, beginStructure, (Lkotlinx/serialization/SerialDescriptor;[Lkotlinx/serialization/KSerializer;)Lkotlinx/serialization/CompositeDecoder;) + INVOKEINTERFACE (kotlinx/serialization/Decoder, beginStructure, (Lkotlinx/serialization/SerialDescriptor;)Lkotlinx/serialization/CompositeDecoder;) ASTORE (1) ALOAD (1) INVOKEINTERFACE (kotlinx/serialization/CompositeDecoder, decodeSequentially, ()Z) @@ -805,21 +783,19 @@ public final class User$$serializer : java/lang/Object, kotlinx/serialization/in public java.lang.Object patch(kotlinx.serialization.Decoder p0, java.lang.Object p1) - public void serialize(kotlinx.serialization.Encoder encoder, User obj) { + public void serialize(kotlinx.serialization.Encoder encoder, User value) { LABEL (L0) ALOAD (1) LDC (encoder) INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V) ALOAD (2) - LDC (obj) + LDC (value) INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V) GETSTATIC ($$serialDesc, Lkotlinx/serialization/SerialDescriptor;) ASTORE (3) ALOAD (1) ALOAD (3) - ICONST_0 - ANEWARRAY - INVOKEINTERFACE (kotlinx/serialization/Encoder, beginStructure, (Lkotlinx/serialization/SerialDescriptor;[Lkotlinx/serialization/KSerializer;)Lkotlinx/serialization/CompositeEncoder;) + INVOKEINTERFACE (kotlinx/serialization/Encoder, beginStructure, (Lkotlinx/serialization/SerialDescriptor;)Lkotlinx/serialization/CompositeEncoder;) ASTORE (1) ALOAD (2) ALOAD (1) @@ -842,6 +818,8 @@ public final class User$$serializer : java/lang/Object, kotlinx/serialization/in INVOKEVIRTUAL (User$$serializer, serialize, (Lkotlinx/serialization/Encoder;LUser;)V) RETURN } + + public kotlinx.serialization.KSerializer[] typeParametersSerializers() } public final class User$Companion : java/lang/Object { @@ -970,4 +948,4 @@ public final class User : java/lang/Object { RETURN LABEL (L1) } -} \ No newline at end of file +} diff --git a/plugins/kotlin-serialization/kotlin-serialization-compiler/testData/diagnostics/DuplicateSerialName.txt b/plugins/kotlin-serialization/kotlin-serialization-compiler/testData/diagnostics/DuplicateSerialName.txt index 7540b6363e5..9d3ec2fe300 100644 --- a/plugins/kotlin-serialization/kotlin-serialization-compiler/testData/diagnostics/DuplicateSerialName.txt +++ b/plugins/kotlin-serialization/kotlin-serialization-compiler/testData/diagnostics/DuplicateSerialName.txt @@ -15,9 +15,10 @@ package public open override /*1*/ /*synthesized*/ fun deserialize(/*0*/ decoder: kotlinx.serialization.Decoder): Derived 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 patch(/*0*/ decoder: kotlinx.serialization.Decoder, /*1*/ old: Derived): Derived - public open override /*1*/ /*synthesized*/ fun serialize(/*0*/ encoder: kotlinx.serialization.Encoder, /*1*/ obj: Derived): kotlin.Unit + @kotlin.Deprecated(level = DeprecationLevel.ERROR, message = "Patch function is deprecated for removal since this functionality is no longer supported by serializer.Some formats may provide implementation-specific patching in their Decoders.") public open override /*1*/ /*fake_override*/ fun patch(/*0*/ decoder: kotlinx.serialization.Decoder, /*1*/ old: Derived): Derived + public open override /*1*/ /*synthesized*/ fun serialize(/*0*/ encoder: kotlinx.serialization.Encoder, /*1*/ value: Derived): kotlin.Unit public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + public open override /*1*/ /*fake_override*/ fun typeParametersSerializers(): kotlin.Array> } public companion object Companion { @@ -44,9 +45,10 @@ package public open override /*1*/ /*synthesized*/ fun deserialize(/*0*/ decoder: kotlinx.serialization.Decoder): Parent 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 patch(/*0*/ decoder: kotlinx.serialization.Decoder, /*1*/ old: Parent): Parent - public open override /*1*/ /*synthesized*/ fun serialize(/*0*/ encoder: kotlinx.serialization.Encoder, /*1*/ obj: Parent): kotlin.Unit + @kotlin.Deprecated(level = DeprecationLevel.ERROR, message = "Patch function is deprecated for removal since this functionality is no longer supported by serializer.Some formats may provide implementation-specific patching in their Decoders.") public open override /*1*/ /*fake_override*/ fun patch(/*0*/ decoder: kotlinx.serialization.Decoder, /*1*/ old: Parent): Parent + public open override /*1*/ /*synthesized*/ fun serialize(/*0*/ encoder: kotlinx.serialization.Encoder, /*1*/ value: Parent): kotlin.Unit public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + public open override /*1*/ /*fake_override*/ fun typeParametersSerializers(): kotlin.Array> } public companion object Companion { diff --git a/plugins/kotlin-serialization/kotlin-serialization-compiler/testData/diagnostics/NoSuitableCtorInParent.txt b/plugins/kotlin-serialization/kotlin-serialization-compiler/testData/diagnostics/NoSuitableCtorInParent.txt index 1c72675032f..169a18bbd67 100644 --- a/plugins/kotlin-serialization/kotlin-serialization-compiler/testData/diagnostics/NoSuitableCtorInParent.txt +++ b/plugins/kotlin-serialization/kotlin-serialization-compiler/testData/diagnostics/NoSuitableCtorInParent.txt @@ -16,9 +16,10 @@ package public open override /*1*/ /*synthesized*/ fun deserialize(/*0*/ decoder: kotlinx.serialization.Decoder): Derived 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 patch(/*0*/ decoder: kotlinx.serialization.Decoder, /*1*/ old: Derived): Derived - public open override /*1*/ /*synthesized*/ fun serialize(/*0*/ encoder: kotlinx.serialization.Encoder, /*1*/ obj: Derived): kotlin.Unit + @kotlin.Deprecated(level = DeprecationLevel.ERROR, message = "Patch function is deprecated for removal since this functionality is no longer supported by serializer.Some formats may provide implementation-specific patching in their Decoders.") public open override /*1*/ /*fake_override*/ fun patch(/*0*/ decoder: kotlinx.serialization.Decoder, /*1*/ old: Derived): Derived + public open override /*1*/ /*synthesized*/ fun serialize(/*0*/ encoder: kotlinx.serialization.Encoder, /*1*/ value: Derived): kotlin.Unit public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + public open override /*1*/ /*fake_override*/ fun typeParametersSerializers(): kotlin.Array> } public companion object Companion { diff --git a/plugins/kotlin-serialization/kotlin-serialization-compiler/testData/diagnostics/NonSerializable.txt b/plugins/kotlin-serialization/kotlin-serialization-compiler/testData/diagnostics/NonSerializable.txt index 8033f77bd61..7961165aee5 100644 --- a/plugins/kotlin-serialization/kotlin-serialization-compiler/testData/diagnostics/NonSerializable.txt +++ b/plugins/kotlin-serialization/kotlin-serialization-compiler/testData/diagnostics/NonSerializable.txt @@ -15,9 +15,10 @@ package public open override /*1*/ /*synthesized*/ fun deserialize(/*0*/ decoder: kotlinx.serialization.Decoder): Basic 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 patch(/*0*/ decoder: kotlinx.serialization.Decoder, /*1*/ old: Basic): Basic - public open override /*1*/ /*synthesized*/ fun serialize(/*0*/ encoder: kotlinx.serialization.Encoder, /*1*/ obj: Basic): kotlin.Unit + @kotlin.Deprecated(level = DeprecationLevel.ERROR, message = "Patch function is deprecated for removal since this functionality is no longer supported by serializer.Some formats may provide implementation-specific patching in their Decoders.") public open override /*1*/ /*fake_override*/ fun patch(/*0*/ decoder: kotlinx.serialization.Decoder, /*1*/ old: Basic): Basic + public open override /*1*/ /*synthesized*/ fun serialize(/*0*/ encoder: kotlinx.serialization.Encoder, /*1*/ value: Basic): kotlin.Unit public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + public open override /*1*/ /*fake_override*/ fun typeParametersSerializers(): kotlin.Array> } public companion object Companion { @@ -44,9 +45,10 @@ package public open override /*1*/ /*synthesized*/ fun deserialize(/*0*/ decoder: kotlinx.serialization.Decoder): Inside 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 patch(/*0*/ decoder: kotlinx.serialization.Decoder, /*1*/ old: Inside): Inside - public open override /*1*/ /*synthesized*/ fun serialize(/*0*/ encoder: kotlinx.serialization.Encoder, /*1*/ obj: Inside): kotlin.Unit + @kotlin.Deprecated(level = DeprecationLevel.ERROR, message = "Patch function is deprecated for removal since this functionality is no longer supported by serializer.Some formats may provide implementation-specific patching in their Decoders.") public open override /*1*/ /*fake_override*/ fun patch(/*0*/ decoder: kotlinx.serialization.Decoder, /*1*/ old: Inside): Inside + public open override /*1*/ /*synthesized*/ fun serialize(/*0*/ encoder: kotlinx.serialization.Encoder, /*1*/ value: Inside): kotlin.Unit public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + public open override /*1*/ /*fake_override*/ fun typeParametersSerializers(): kotlin.Array> } public companion object Companion { @@ -80,9 +82,10 @@ public final class NonSerializable { public open override /*1*/ /*synthesized*/ fun deserialize(/*0*/ decoder: kotlinx.serialization.Decoder): WithImplicitType 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 patch(/*0*/ decoder: kotlinx.serialization.Decoder, /*1*/ old: WithImplicitType): WithImplicitType - public open override /*1*/ /*synthesized*/ fun serialize(/*0*/ encoder: kotlinx.serialization.Encoder, /*1*/ obj: WithImplicitType): kotlin.Unit + @kotlin.Deprecated(level = DeprecationLevel.ERROR, message = "Patch function is deprecated for removal since this functionality is no longer supported by serializer.Some formats may provide implementation-specific patching in their Decoders.") public open override /*1*/ /*fake_override*/ fun patch(/*0*/ decoder: kotlinx.serialization.Decoder, /*1*/ old: WithImplicitType): WithImplicitType + public open override /*1*/ /*synthesized*/ fun serialize(/*0*/ encoder: kotlinx.serialization.Encoder, /*1*/ value: WithImplicitType): kotlin.Unit public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + public open override /*1*/ /*fake_override*/ fun typeParametersSerializers(): kotlin.Array> } public companion object Companion { diff --git a/plugins/kotlin-serialization/kotlin-serialization-compiler/testData/diagnostics/NullabilityIncompatible.kt b/plugins/kotlin-serialization/kotlin-serialization-compiler/testData/diagnostics/NullabilityIncompatible.kt index 27549f0299d..95f280ac4d0 100644 --- a/plugins/kotlin-serialization/kotlin-serialization-compiler/testData/diagnostics/NullabilityIncompatible.kt +++ b/plugins/kotlin-serialization/kotlin-serialization-compiler/testData/diagnostics/NullabilityIncompatible.kt @@ -9,7 +9,7 @@ class Nope {} class NopeNullableSerializer: KSerializer { override val descriptor: SerialDescriptor get() = TODO() override fun deserialize(decoder: Decoder): Nope? = TODO() - override fun serialize(encoder: Encoder, obj: Nope?) = TODO() + override fun serialize(encoder: Encoder, value: Nope?) = TODO() } @Serializable diff --git a/plugins/kotlin-serialization/kotlin-serialization-compiler/testData/diagnostics/NullabilityIncompatible.txt b/plugins/kotlin-serialization/kotlin-serialization-compiler/testData/diagnostics/NullabilityIncompatible.txt index 1a219010024..df74413ca3f 100644 --- a/plugins/kotlin-serialization/kotlin-serialization-compiler/testData/diagnostics/NullabilityIncompatible.txt +++ b/plugins/kotlin-serialization/kotlin-serialization-compiler/testData/diagnostics/NullabilityIncompatible.txt @@ -15,9 +15,10 @@ package public open override /*1*/ /*synthesized*/ fun deserialize(/*0*/ decoder: kotlinx.serialization.Decoder): Foo 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 patch(/*0*/ decoder: kotlinx.serialization.Decoder, /*1*/ old: Foo): Foo - public open override /*1*/ /*synthesized*/ fun serialize(/*0*/ encoder: kotlinx.serialization.Encoder, /*1*/ obj: Foo): kotlin.Unit + @kotlin.Deprecated(level = DeprecationLevel.ERROR, message = "Patch function is deprecated for removal since this functionality is no longer supported by serializer.Some formats may provide implementation-specific patching in their Decoders.") public open override /*1*/ /*fake_override*/ fun patch(/*0*/ decoder: kotlinx.serialization.Decoder, /*1*/ old: Foo): Foo + public open override /*1*/ /*synthesized*/ fun serialize(/*0*/ encoder: kotlinx.serialization.Encoder, /*1*/ value: Foo): kotlin.Unit public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + public open override /*1*/ /*fake_override*/ fun typeParametersSerializers(): kotlin.Array> } public companion object Companion { @@ -50,7 +51,7 @@ public final class NopeNullableSerializer : kotlinx.serialization.KSerializer> } public companion object Companion { diff --git a/plugins/kotlin-serialization/kotlin-serialization-compiler/testData/diagnostics/SerializableEnums.kt b/plugins/kotlin-serialization/kotlin-serialization-compiler/testData/diagnostics/SerializableEnums.kt index a8fa9c4d021..451d566261b 100644 --- a/plugins/kotlin-serialization/kotlin-serialization-compiler/testData/diagnostics/SerializableEnums.kt +++ b/plugins/kotlin-serialization/kotlin-serialization-compiler/testData/diagnostics/SerializableEnums.kt @@ -7,16 +7,14 @@ enum class SimpleEnum { A, B } enum class MarkedNameEnum { @SerialName("a") A, B} -enum class MarkedInfoEnum { @SerialId(10) A, B} - @Serializable -enum class ExplicitlyMarkedEnum { @SerialId(10) A, B} +enum class ExplicitlyMarkedEnum { @SerialName("a") A, B} @Serializable(EnumSerializer::class) -enum class ExplicitlyMarkedEnumCustom { @SerialId(10) A, B} +enum class ExplicitlyMarkedEnumCustom { @SerialName("a") A, B} object EnumSerializer: KSerializer { override val descriptor = TODO() - override fun serialize(encoder: Encoder, obj: ExplicitlyMarkedEnumCustom) = TODO() + override fun serialize(encoder: Encoder, value: ExplicitlyMarkedEnumCustom) = TODO() override fun deserialize(decoder: Decoder): ExplicitlyMarkedEnumCustom = TODO() } \ No newline at end of file diff --git a/plugins/kotlin-serialization/kotlin-serialization-compiler/testData/diagnostics/SerializableEnums.txt b/plugins/kotlin-serialization/kotlin-serialization-compiler/testData/diagnostics/SerializableEnums.txt index e164717aa11..12d4d159183 100644 --- a/plugins/kotlin-serialization/kotlin-serialization-compiler/testData/diagnostics/SerializableEnums.txt +++ b/plugins/kotlin-serialization/kotlin-serialization-compiler/testData/diagnostics/SerializableEnums.txt @@ -6,13 +6,13 @@ public object EnumSerializer : kotlinx.serialization.KSerializer { - @kotlinx.serialization.SerialId(id = 10) enum entry A + @kotlinx.serialization.SerialName(value = "a") enum entry A enum entry B @@ -34,9 +34,10 @@ public object EnumSerializer : kotlinx.serialization.KSerializer> } public companion object Companion { @@ -53,7 +54,7 @@ public object EnumSerializer : kotlinx.serialization.KSerializer { - @kotlinx.serialization.SerialId(id = 10) enum entry A + @kotlinx.serialization.SerialName(value = "a") enum entry A enum entry B @@ -73,27 +74,6 @@ public object EnumSerializer : kotlinx.serialization.KSerializer } -public final enum class MarkedInfoEnum : kotlin.Enum { - @kotlinx.serialization.SerialId(id = 10) enum entry A - - enum entry B - - private constructor MarkedInfoEnum() - public final override /*1*/ /*fake_override*/ val name: kotlin.String - public final override /*1*/ /*fake_override*/ val ordinal: kotlin.Int - protected final override /*1*/ /*fake_override*/ fun clone(): kotlin.Any - public final override /*1*/ /*fake_override*/ fun compareTo(/*0*/ other: MarkedInfoEnum): kotlin.Int - public final override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean - protected/*protected and package*/ final override /*1*/ /*fake_override*/ /*isHiddenForResolutionEverywhereBesideSupercalls*/ fun finalize(): kotlin.Unit - public final override /*1*/ /*fake_override*/ /*isHiddenForResolutionEverywhereBesideSupercalls*/ fun getDeclaringClass(): java.lang.Class! - public final override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int - public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String - - // Static members - public final /*synthesized*/ fun valueOf(/*0*/ value: kotlin.String): MarkedInfoEnum - public final /*synthesized*/ fun values(): kotlin.Array -} - public final enum class MarkedNameEnum : kotlin.Enum { @kotlinx.serialization.SerialName(value = "a") enum entry A diff --git a/plugins/kotlin-serialization/kotlin-serialization-compiler/testData/diagnostics/Transients.txt b/plugins/kotlin-serialization/kotlin-serialization-compiler/testData/diagnostics/Transients.txt index bf60040c1d3..5974f00f21d 100644 --- a/plugins/kotlin-serialization/kotlin-serialization-compiler/testData/diagnostics/Transients.txt +++ b/plugins/kotlin-serialization/kotlin-serialization-compiler/testData/diagnostics/Transients.txt @@ -19,9 +19,10 @@ package public open override /*1*/ /*synthesized*/ fun deserialize(/*0*/ decoder: kotlinx.serialization.Decoder): WithTransients 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 patch(/*0*/ decoder: kotlinx.serialization.Decoder, /*1*/ old: WithTransients): WithTransients - public open override /*1*/ /*synthesized*/ fun serialize(/*0*/ encoder: kotlinx.serialization.Encoder, /*1*/ obj: WithTransients): kotlin.Unit + @kotlin.Deprecated(level = DeprecationLevel.ERROR, message = "Patch function is deprecated for removal since this functionality is no longer supported by serializer.Some formats may provide implementation-specific patching in their Decoders.") public open override /*1*/ /*fake_override*/ fun patch(/*0*/ decoder: kotlinx.serialization.Decoder, /*1*/ old: WithTransients): WithTransients + public open override /*1*/ /*synthesized*/ fun serialize(/*0*/ encoder: kotlinx.serialization.Encoder, /*1*/ value: WithTransients): kotlin.Unit public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + public open override /*1*/ /*fake_override*/ fun typeParametersSerializers(): kotlin.Array> } public companion object Companion { diff --git a/tests/mute-common.csv b/tests/mute-common.csv index 4edcc4ef3bb..791734d9089 100644 --- a/tests/mute-common.csv +++ b/tests/mute-common.csv @@ -52,7 +52,6 @@ org.jetbrains.kotlin.psi.injection.StringInterpolationInjectionTest.testInterpol org.jetbrains.kotlin.nj2k.NewJavaToKotlinConverterSingleFileTestGenerated.Issues.testKt_8170, KT-36459 org.jetbrains.kotlin.shortenRefs.ShortenRefsTestGenerated.testExtensionForObject2, Always red org.jetbrains.kotlin.util.KotlinVersionsTest.testVersionsAreConsistent, KT-35567 -org.jetbrains.kotlinx.serialization.SerializationIrBytecodeListingTestGenerated.testBasic, wait until new serialziation runtime version will be publicly available org.jetbrains.kotlin.jvm.compiler.CompileKotlinAgainstJavaTestGenerated.WithAPT.testClassWithTypeParameter, KT-36448 org.jetbrains.kotlin.jvm.compiler.CompileKotlinAgainstJavaTestGenerated.WithoutAPT.testClassWithTypeParameter, KT-36448 org.jetbrains.kotlin.idea.debugger.test.AsyncStackTraceTestGenerated.testAllFilesPresentInAsyncStackTrace, redesign test AsyncStackTraces