From af4308e634f91f88a9038be38025d94cdcb65054 Mon Sep 17 00:00:00 2001 From: "Sergey.Shanshin" Date: Wed, 9 Nov 2022 17:11:40 +0000 Subject: [PATCH] Fixed replacing serializer origin for generated classes Do not use plugin origin for user-written classes that have @Serializer annotation for some reason. Plugin origin makes them synthetic which is incorrect because they're available in source code. Example of such class: @Serializer(JsonElement::class) class JsonElementSerializer Merge-request: KT-MR-7627 Merged-by: Sergey Shanshin --- .../compiler/backend/ir/SerializerIrGenerator.kt | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) 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 86a0a7fe820..f55ec6f10c5 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 @@ -624,7 +624,10 @@ open class SerializerIrGenerator( else -> SerializerIrGenerator(irClass, context, metadataPlugin) } generator.generate() - irClass.origin = SERIALIZATION_PLUGIN_ORIGIN + if (irClass.isFromPlugin(context.afterK2)) { + // replace origin only for plugin generated serializers + irClass.origin = SERIALIZATION_PLUGIN_ORIGIN + } irClass.addDefaultConstructorIfAbsent(context) irClass.patchDeclarationParents(irClass.parent) }