diff --git a/plugins/kotlinx-serialization/kotlinx-serialization.backend/src/org/jetbrains/kotlinx/serialization/compiler/backend/ir/SerializableIrGenerator.kt b/plugins/kotlinx-serialization/kotlinx-serialization.backend/src/org/jetbrains/kotlinx/serialization/compiler/backend/ir/SerializableIrGenerator.kt index e76b50f3c22..7db4fd082b4 100644 --- a/plugins/kotlinx-serialization/kotlinx-serialization.backend/src/org/jetbrains/kotlinx/serialization/compiler/backend/ir/SerializableIrGenerator.kt +++ b/plugins/kotlinx-serialization/kotlinx-serialization.backend/src/org/jetbrains/kotlinx/serialization/compiler/backend/ir/SerializableIrGenerator.kt @@ -369,6 +369,7 @@ class SerializableIrGenerator( val serializerDescriptor = irClass.classSerializer(compilerContext)?.owner ?: return if (irClass.shouldHaveSpecificSyntheticMethods { serializerDescriptor.findPluginGeneratedMethod(SAVE) }) { val func = irClass.findWriteSelfMethod() ?: return + func.origin = SERIALIZATION_PLUGIN_ORIGIN generateWriteSelfMethod(func) } } diff --git a/plugins/kotlinx-serialization/kotlinx-serialization.backend/src/org/jetbrains/kotlinx/serialization/compiler/backend/ir/SerializerIrGenerator.kt b/plugins/kotlinx-serialization/kotlinx-serialization.backend/src/org/jetbrains/kotlinx/serialization/compiler/backend/ir/SerializerIrGenerator.kt index 87fa34d2fbc..618e4b42225 100644 --- a/plugins/kotlinx-serialization/kotlinx-serialization.backend/src/org/jetbrains/kotlinx/serialization/compiler/backend/ir/SerializerIrGenerator.kt +++ b/plugins/kotlinx-serialization/kotlinx-serialization.backend/src/org/jetbrains/kotlinx/serialization/compiler/backend/ir/SerializerIrGenerator.kt @@ -623,6 +623,7 @@ open class SerializerIrGenerator( else -> SerializerIrGenerator(irClass, context, metadataPlugin) } generator.generate() + irClass.origin = SERIALIZATION_PLUGIN_ORIGIN irClass.addDefaultConstructorIfAbsent(context) irClass.patchDeclarationParents(irClass.parent) } diff --git a/plugins/kotlinx-serialization/testData/codegen/Basic.asm.ir.txt b/plugins/kotlinx-serialization/testData/codegen/Basic.asm.ir.txt index b8fb050138d..b67e14de703 100644 --- a/plugins/kotlinx-serialization/testData/codegen/Basic.asm.ir.txt +++ b/plugins/kotlinx-serialization/testData/codegen/Basic.asm.ir.txt @@ -295,16 +295,6 @@ public final class ListOfUsers : java/lang/Object { public final static void write$Self(ListOfUsers self, kotlinx.serialization.encoding.CompositeEncoder output, kotlinx.serialization.descriptors.SerialDescriptor serialDesc) { LABEL (L0) - ALOAD (0) - LDC (self) - INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V) - ALOAD (1) - LDC (output) - INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V) - ALOAD (2) - LDC (serialDesc) - INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V) - LABEL (L1) LINENUMBER (12) ALOAD (1) ALOAD (2) @@ -319,7 +309,7 @@ public final class ListOfUsers : java/lang/Object { GETFIELD (ListOfUsers, list, Ljava/util/List;) INVOKEINTERFACE (kotlinx/serialization/encoding/CompositeEncoder, encodeSerializableElement, (Lkotlinx/serialization/descriptors/SerialDescriptor;ILkotlinx/serialization/SerializationStrategy;Ljava/lang/Object;)V) RETURN - LABEL (L2) + LABEL (L1) } } @@ -656,28 +646,18 @@ public final class OptionalUser : java/lang/Object { public final static void write$Self(OptionalUser self, kotlinx.serialization.encoding.CompositeEncoder output, kotlinx.serialization.descriptors.SerialDescriptor serialDesc) { LABEL (L0) - ALOAD (0) - LDC (self) - INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V) - ALOAD (1) - LDC (output) - INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V) - ALOAD (2) - LDC (serialDesc) - INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V) - LABEL (L1) LINENUMBER (9) ALOAD (1) ALOAD (2) ICONST_0 INVOKEINTERFACE (kotlinx/serialization/encoding/CompositeEncoder, shouldEncodeElementDefault, (Lkotlinx/serialization/descriptors/SerialDescriptor;I)Z) - IFEQ (L2) + IFEQ (L1) ICONST_1 - GOTO (L3) - LABEL (L2) + GOTO (L2) + LABEL (L1) ALOAD (0) GETFIELD (OptionalUser, user, LUser;) - LABEL (L4) + LABEL (L3) LINENUMBER (10) NEW (User) DUP @@ -685,14 +665,14 @@ public final class OptionalUser : java/lang/Object { LDC () INVOKESPECIAL (User, , (Ljava/lang/String;Ljava/lang/String;)V) INVOKESTATIC (kotlin/jvm/internal/Intrinsics, areEqual, (Ljava/lang/Object;Ljava/lang/Object;)Z) - IFNE (L5) + IFNE (L4) ICONST_1 - GOTO (L3) - LABEL (L5) + GOTO (L2) + LABEL (L4) ICONST_0 - LABEL (L3) - IFEQ (L6) - LABEL (L7) + LABEL (L2) + IFEQ (L5) + LABEL (L6) LINENUMBER (9) ALOAD (1) ALOAD (2) @@ -702,9 +682,9 @@ public final class OptionalUser : java/lang/Object { ALOAD (0) GETFIELD (OptionalUser, user, LUser;) INVOKEINTERFACE (kotlinx/serialization/encoding/CompositeEncoder, encodeSerializableElement, (Lkotlinx/serialization/descriptors/SerialDescriptor;ILkotlinx/serialization/SerializationStrategy;Ljava/lang/Object;)V) - LABEL (L6) + LABEL (L5) RETURN - LABEL (L8) + LABEL (L7) } } @@ -1032,16 +1012,6 @@ public final class User : java/lang/Object { public final static void write$Self(User self, kotlinx.serialization.encoding.CompositeEncoder output, kotlinx.serialization.descriptors.SerialDescriptor serialDesc) { LABEL (L0) - ALOAD (0) - LDC (self) - INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V) - ALOAD (1) - LDC (output) - INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V) - ALOAD (2) - LDC (serialDesc) - INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V) - LABEL (L1) LINENUMBER (6) ALOAD (1) ALOAD (2) @@ -1056,6 +1026,6 @@ public final class User : java/lang/Object { GETFIELD (User, lastName, Ljava/lang/String;) INVOKEINTERFACE (kotlinx/serialization/encoding/CompositeEncoder, encodeStringElement, (Lkotlinx/serialization/descriptors/SerialDescriptor;ILjava/lang/String;)V) RETURN - LABEL (L2) + LABEL (L1) } } diff --git a/plugins/kotlinx-serialization/testData/codegen/Sealed.asm.ir.txt b/plugins/kotlinx-serialization/testData/codegen/Sealed.asm.ir.txt index b897cf03d40..04c55809c0b 100644 --- a/plugins/kotlinx-serialization/testData/codegen/Sealed.asm.ir.txt +++ b/plugins/kotlinx-serialization/testData/codegen/Sealed.asm.ir.txt @@ -249,16 +249,6 @@ public final class Container : java/lang/Object { public final static void write$Self(Container self, kotlinx.serialization.encoding.CompositeEncoder output, kotlinx.serialization.descriptors.SerialDescriptor serialDesc) { LABEL (L0) - ALOAD (0) - LDC (self) - INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V) - ALOAD (1) - LDC (output) - INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V) - ALOAD (2) - LDC (serialDesc) - INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V) - LABEL (L1) LINENUMBER (18) ALOAD (1) ALOAD (2) @@ -270,7 +260,7 @@ public final class Container : java/lang/Object { GETFIELD (Container, r, LResult;) INVOKEINTERFACE (kotlinx/serialization/encoding/CompositeEncoder, encodeSerializableElement, (Lkotlinx/serialization/descriptors/SerialDescriptor;ILkotlinx/serialization/SerializationStrategy;Ljava/lang/Object;)V) RETURN - LABEL (L2) + LABEL (L1) } } @@ -716,16 +706,6 @@ public final class Result$OK : Result { public final static void write$Self(Result$OK self, kotlinx.serialization.encoding.CompositeEncoder output, kotlinx.serialization.descriptors.SerialDescriptor serialDesc) { LABEL (L0) - ALOAD (0) - LDC (self) - INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V) - ALOAD (1) - LDC (output) - INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V) - ALOAD (2) - LDC (serialDesc) - INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V) - LABEL (L1) LINENUMBER (14) ALOAD (0) CHECKCAST (Result) @@ -739,7 +719,7 @@ public final class Result$OK : Result { GETFIELD (Result$OK, s, Ljava/lang/String;) INVOKEINTERFACE (kotlinx/serialization/encoding/CompositeEncoder, encodeStringElement, (Lkotlinx/serialization/descriptors/SerialDescriptor;ILjava/lang/String;)V) RETURN - LABEL (L2) + LABEL (L1) } } @@ -798,15 +778,6 @@ public abstract class Result : java/lang/Object, X { public final static void write$Self(Result self, kotlinx.serialization.encoding.CompositeEncoder output, kotlinx.serialization.descriptors.SerialDescriptor serialDesc) { LABEL (L0) - ALOAD (0) - LDC (self) - INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V) - ALOAD (1) - LDC (output) - INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V) - ALOAD (2) - LDC (serialDesc) - INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V) RETURN LABEL (L1) }