diff --git a/compiler/ir/backend.jvm/codegen/src/org/jetbrains/kotlin/backend/jvm/codegen/IrInlineIntrinsicsSupport.kt b/compiler/ir/backend.jvm/codegen/src/org/jetbrains/kotlin/backend/jvm/codegen/IrInlineIntrinsicsSupport.kt index 9765e4f7ee1..08be5134890 100644 --- a/compiler/ir/backend.jvm/codegen/src/org/jetbrains/kotlin/backend/jvm/codegen/IrInlineIntrinsicsSupport.kt +++ b/compiler/ir/backend.jvm/codegen/src/org/jetbrains/kotlin/backend/jvm/codegen/IrInlineIntrinsicsSupport.kt @@ -1,5 +1,5 @@ /* - * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors. * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. */ @@ -43,6 +43,7 @@ class IrInlineIntrinsicsSupport( override val state: GenerationState get() = classCodegen.context.state + // todo: this likely need to be moved up as IrInlineIntrinsicsSupport is recreated every time in getOrCreateCallGenerator private val pluginExtensions = IrGenerationExtension.getInstances(classCodegen.context.state.project) .mapNotNull { it.getPlatformIntrinsicExtension(classCodegen.context) as? JvmIrIntrinsicExtension } diff --git a/compiler/ir/backend.jvm/entrypoint/src/org/jetbrains/kotlin/backend/jvm/JvmIrCodegenFactory.kt b/compiler/ir/backend.jvm/entrypoint/src/org/jetbrains/kotlin/backend/jvm/JvmIrCodegenFactory.kt index 60b76e70029..9b210065e16 100644 --- a/compiler/ir/backend.jvm/entrypoint/src/org/jetbrains/kotlin/backend/jvm/JvmIrCodegenFactory.kt +++ b/compiler/ir/backend.jvm/entrypoint/src/org/jetbrains/kotlin/backend/jvm/JvmIrCodegenFactory.kt @@ -1,5 +1,5 @@ /* - * Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors. * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. */ @@ -309,7 +309,7 @@ open class JvmIrCodegenFactory( } override fun invokeLowerings(state: GenerationState, input: CodegenFactory.BackendInput): CodegenFactory.CodegenInput { - val (irModuleFragment, symbolTable, customPhaseConfig, irProviders, extensions, backendExtension, _, notifyCodegenStart) = + val (irModuleFragment, symbolTable, customPhaseConfig, irProviders, extensions, backendExtension, irPluginContext, notifyCodegenStart) = input as JvmIrBackendInput val irSerializer = if ( state.configuration.get(JVMConfigurationKeys.SERIALIZE_IR, JvmSerializeIrMode.NONE) != JvmSerializeIrMode.NONE @@ -319,7 +319,7 @@ open class JvmIrCodegenFactory( val phases = if (evaluatorFragmentInfoForPsi2Ir != null) jvmFragmentLoweringPhases else jvmLoweringPhases val phaseConfig = customPhaseConfig ?: PhaseConfig(phases) val context = JvmBackendContext( - state, irModuleFragment.irBuiltins, symbolTable, phaseConfig, extensions, backendExtension, irSerializer, + state, irModuleFragment.irBuiltins, symbolTable, phaseConfig, extensions, backendExtension, irSerializer, irPluginContext ) if (evaluatorFragmentInfoForPsi2Ir != null) { context.localDeclarationsLoweringData = mutableMapOf() diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/JvmBackendContext.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/JvmBackendContext.kt index 3c6747f5719..c3bcc0b7bc8 100644 --- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/JvmBackendContext.kt +++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/JvmBackendContext.kt @@ -1,5 +1,5 @@ /* - * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors. * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. */ @@ -9,6 +9,7 @@ import org.jetbrains.kotlin.KtDiagnosticReporterWithImplicitIrBasedContext import org.jetbrains.kotlin.backend.common.CommonBackendContext import org.jetbrains.kotlin.backend.common.DefaultMapping import org.jetbrains.kotlin.backend.common.Mapping +import org.jetbrains.kotlin.backend.common.extensions.IrPluginContext import org.jetbrains.kotlin.backend.common.ir.Ir import org.jetbrains.kotlin.backend.common.lower.LocalDeclarationsLowering import org.jetbrains.kotlin.backend.common.phaser.PhaseConfig @@ -48,6 +49,7 @@ class JvmBackendContext( val generatorExtensions: JvmGeneratorExtensions, val backendExtension: JvmBackendExtension, val irSerializer: JvmIrSerializer?, + val irPluginContext: IrPluginContext?, ) : CommonBackendContext { @Suppress("UNUSED_PARAMETER") @@ -61,7 +63,7 @@ class JvmBackendContext( generatorExtensions: JvmGeneratorExtensions, backendExtension: JvmBackendExtension, irSerializer: JvmIrSerializer?, - ) : this(state, irBuiltIns, symbolTable, phaseConfig, generatorExtensions, backendExtension, irSerializer) + ) : this(state, irBuiltIns, symbolTable, phaseConfig, generatorExtensions, backendExtension, irSerializer, null) data class LocalFunctionData( val localContext: LocalDeclarationsLowering.LocalFunctionContext, diff --git a/plugins/kotlinx-serialization/kotlinx-serialization.backend/src/org/jetbrains/kotlinx/serialization/compiler/backend/ir/SerializationJvmIrIntrinsicSupport.kt b/plugins/kotlinx-serialization/kotlinx-serialization.backend/src/org/jetbrains/kotlinx/serialization/compiler/backend/ir/SerializationJvmIrIntrinsicSupport.kt index 9671d156327..871743207f5 100644 --- a/plugins/kotlinx-serialization/kotlinx-serialization.backend/src/org/jetbrains/kotlinx/serialization/compiler/backend/ir/SerializationJvmIrIntrinsicSupport.kt +++ b/plugins/kotlinx-serialization/kotlinx-serialization.backend/src/org/jetbrains/kotlinx/serialization/compiler/backend/ir/SerializationJvmIrIntrinsicSupport.kt @@ -5,7 +5,7 @@ package org.jetbrains.kotlinx.serialization.compiler.backend.ir -import org.jetbrains.kotlin.backend.common.extensions.FirIncompatiblePluginAPI +import org.jetbrains.kotlin.backend.common.extensions.IrPluginContext import org.jetbrains.kotlin.backend.jvm.JvmBackendContext import org.jetbrains.kotlin.backend.jvm.codegen.* import org.jetbrains.kotlin.backend.jvm.intrinsics.IntrinsicMethod @@ -18,7 +18,6 @@ import org.jetbrains.kotlin.codegen.inline.ReifiedTypeInliner.Companion.pluginIn import org.jetbrains.kotlin.codegen.inline.ReifiedTypeInliner.Companion.pluginIntrinsicsMarkerOwner import org.jetbrains.kotlin.codegen.inline.ReifiedTypeInliner.Companion.pluginIntrinsicsMarkerSignature import org.jetbrains.kotlin.config.ApiVersion -import org.jetbrains.kotlin.descriptors.findClassAcrossModuleDependencies import org.jetbrains.kotlin.ir.declarations.IrClass import org.jetbrains.kotlin.ir.declarations.IrFunction import org.jetbrains.kotlin.ir.expressions.IrFunctionAccessExpression @@ -49,7 +48,6 @@ import org.jetbrains.kotlinx.serialization.compiler.resolve.SerializersClassIds. import org.jetbrains.kotlinx.serialization.compiler.resolve.SerializersClassIds.referenceArraySerializerId import org.jetbrains.kotlinx.serialization.compiler.resolve.SerializersClassIds.sealedSerializerId import org.jetbrains.kotlinx.serialization.compiler.resolve.SpecialBuiltins -import org.jetbrains.kotlinx.serialization.compiler.resolve.annotationsWithArguments import org.jetbrains.kotlinx.serialization.compiler.resolve.getClassFromSerializationPackage import org.jetbrains.org.objectweb.asm.Opcodes import org.jetbrains.org.objectweb.asm.Type @@ -59,7 +57,10 @@ import org.jetbrains.org.objectweb.asm.tree.InsnList import org.jetbrains.org.objectweb.asm.tree.LdcInsnNode import org.jetbrains.org.objectweb.asm.tree.VarInsnNode -class SerializationJvmIrIntrinsicSupport(val jvmBackendContext: JvmBackendContext) : SerializationBaseContext, JvmIrIntrinsicExtension { +class SerializationJvmIrIntrinsicSupport( + private val jvmBackendContext: JvmBackendContext, + private val irPluginContext: IrPluginContext +) : SerializationBaseContext, JvmIrIntrinsicExtension { sealed class IntrinsicType(val methodDescriptor: String) { object Simple : IntrinsicType(stubCallDescriptor) @@ -151,14 +152,7 @@ class SerializationJvmIrIntrinsicSupport(val jvmBackendContext: JvmBackendContex private val typeSystemContext = jvmBackendContext.typeSystem private val typeMapper = jvmBackendContext.defaultTypeMapper - /** - * This likely won't work in FIR because module is empty there and can't reference dependencies - * Proper referencing can be done via FirPluginContext, but it's not available in the intrinsics. - */ - @FirIncompatiblePluginAPI - override fun referenceClassId(classId: ClassId): IrClassSymbol? { - return module.findClassAcrossModuleDependencies(classId)?.let { jvmBackendContext.referenceClass(it) } - } + override fun referenceClassId(classId: ClassId): IrClassSymbol? = irPluginContext.referenceClass(classId) private val currentVersion by lazy { VersionReader.getVersionsForCurrentModuleFromTrace(module, jvmBackendContext.state.bindingTrace) diff --git a/plugins/kotlinx-serialization/kotlinx-serialization.backend/src/org/jetbrains/kotlinx/serialization/compiler/extensions/SerializationLoweringExtension.kt b/plugins/kotlinx-serialization/kotlinx-serialization.backend/src/org/jetbrains/kotlinx/serialization/compiler/extensions/SerializationLoweringExtension.kt index d8cb2ea3777..91ff612f24c 100644 --- a/plugins/kotlinx-serialization/kotlinx-serialization.backend/src/org/jetbrains/kotlinx/serialization/compiler/extensions/SerializationLoweringExtension.kt +++ b/plugins/kotlinx-serialization/kotlinx-serialization.backend/src/org/jetbrains/kotlinx/serialization/compiler/extensions/SerializationLoweringExtension.kt @@ -1,5 +1,5 @@ /* - * Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors. * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. */ @@ -14,9 +14,7 @@ import org.jetbrains.kotlin.backend.common.extensions.IrPluginContext import org.jetbrains.kotlin.backend.common.runOnFilePostfix import org.jetbrains.kotlin.backend.jvm.JvmBackendContext import org.jetbrains.kotlin.backend.jvm.ir.fileParent -import org.jetbrains.kotlin.config.CommonConfigurationKeys import org.jetbrains.kotlin.builtins.StandardNames -import org.jetbrains.kotlin.descriptors.findClassAcrossModuleDependencies import org.jetbrains.kotlin.ir.IrElement import org.jetbrains.kotlin.ir.declarations.* import org.jetbrains.kotlin.ir.symbols.IrClassSymbol @@ -185,25 +183,23 @@ open class SerializationLoweringExtension @JvmOverloads constructor( override fun getPlatformIntrinsicExtension(backendContext: BackendContext): IrIntrinsicExtension? { val ctx = backendContext as? JvmBackendContext ?: return null if (!canEnableIntrinsics(ctx)) return null - return SerializationJvmIrIntrinsicSupport(ctx) + return SerializationJvmIrIntrinsicSupport( + ctx, + requireNotNull(ctx.irPluginContext) { "Intrinsics can't be enabled with null irPluginContext, check `canEnableIntrinsics` function for bugs." }) } private fun canEnableIntrinsics(ctx: JvmBackendContext): Boolean { - if (ctx.state.configuration[CommonConfigurationKeys.USE_FIR] == true) return false return when (intrinsicsState) { SerializationIntrinsicsState.FORCE_ENABLED -> true SerializationIntrinsicsState.DISABLED -> false SerializationIntrinsicsState.NORMAL -> { - val module = ctx.state.module - if (module.findClassAcrossModuleDependencies( - ClassId( - SerializationPackages.packageFqName, - SerialEntityNames.KSERIALIZER_NAME - ) - ) == null - ) return false - module.getPackage(SerializationPackages.packageFqName).memberScope.getFunctionNames() - .any { it.asString() == SerializationJvmIrIntrinsicSupport.noCompiledSerializerMethodName } + val requiredFunctionsFromRuntime = ctx.irPluginContext?.referenceFunctions( + CallableId( + SerializationPackages.packageFqName, + Name.identifier(SerializationJvmIrIntrinsicSupport.noCompiledSerializerMethodName) + ) + ).orEmpty() + requiredFunctionsFromRuntime.isNotEmpty() && requiredFunctionsFromRuntime.all { it.isBound } } } } diff --git a/plugins/kotlinx-serialization/testData/boxIr/contextualFallback.kt b/plugins/kotlinx-serialization/testData/boxIr/contextualFallback.kt index 8046d91b68c..c43092a484e 100644 --- a/plugins/kotlinx-serialization/testData/boxIr/contextualFallback.kt +++ b/plugins/kotlinx-serialization/testData/boxIr/contextualFallback.kt @@ -5,6 +5,7 @@ import kotlinx.serialization.* import kotlinx.serialization.json.* import kotlinx.serialization.encoding.* +import kotlin.reflect.typeOf @Serializable data class Holder( @@ -14,7 +15,7 @@ data class Holder( ) fun box(): String { - val serializer = serializer>>() + val serializer = serializer(typeOf>>()) val instance = Holder(true, listOf("a", "b")) val encoded = Json.encodeToString(serializer, instance) if (encoded != """{"ok":true,"result":["a","b"]}""") return encoded diff --git a/plugins/kotlinx-serialization/testData/boxIr/intrinsicAnnotations.kt b/plugins/kotlinx-serialization/testData/boxIr/intrinsicAnnotations.kt index 573e492324f..90152878d98 100644 --- a/plugins/kotlinx-serialization/testData/boxIr/intrinsicAnnotations.kt +++ b/plugins/kotlinx-serialization/testData/boxIr/intrinsicAnnotations.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND_FIR: JVM_IR // TARGET_BACKEND: JVM_IR // WITH_STDLIB diff --git a/plugins/kotlinx-serialization/testData/boxIr/intrinsicsBox.kt b/plugins/kotlinx-serialization/testData/boxIr/intrinsicsBox.kt index 3b4d9c661b8..a082815828c 100644 --- a/plugins/kotlinx-serialization/testData/boxIr/intrinsicsBox.kt +++ b/plugins/kotlinx-serialization/testData/boxIr/intrinsicsBox.kt @@ -19,7 +19,7 @@ object SerializableObject {} val module = SerializersModule {} -inline fun getSer(module: SerializersModule): KSerializer { +inline fun getSer(module: SerializersModule): KSerializer { return module.serializer() } diff --git a/plugins/kotlinx-serialization/testData/codegen/Basic.asm.fir.txt b/plugins/kotlinx-serialization/testData/codegen/Basic.asm.fir.txt new file mode 100644 index 00000000000..f9df8cd18df --- /dev/null +++ b/plugins/kotlinx-serialization/testData/codegen/Basic.asm.fir.txt @@ -0,0 +1,988 @@ +public final class ListOfUsers$$serializer : java/lang/Object, kotlinx/serialization/internal/GeneratedSerializer { + public final static ListOfUsers$$serializer INSTANCE + + private final static kotlinx.serialization.descriptors.SerialDescriptor descriptor + + static void () { + NEW (ListOfUsers$$serializer) + DUP + INVOKESPECIAL (ListOfUsers$$serializer, , ()V) + PUTSTATIC (ListOfUsers$$serializer, INSTANCE, LListOfUsers$$serializer;) + NEW (kotlinx/serialization/internal/PluginGeneratedSerialDescriptor) + DUP + LDC (ListOfUsers) + GETSTATIC (ListOfUsers$$serializer, INSTANCE, LListOfUsers$$serializer;) + CHECKCAST (kotlinx/serialization/internal/GeneratedSerializer) + ICONST_1 + INVOKESPECIAL (kotlinx/serialization/internal/PluginGeneratedSerialDescriptor, , (Ljava/lang/String;Lkotlinx/serialization/internal/GeneratedSerializer;I)V) + ASTORE (0) + ALOAD (0) + LDC (list) + ICONST_0 + INVOKEVIRTUAL (kotlinx/serialization/internal/PluginGeneratedSerialDescriptor, addElement, (Ljava/lang/String;Z)V) + ALOAD (0) + CHECKCAST (kotlinx/serialization/descriptors/SerialDescriptor) + PUTSTATIC (ListOfUsers$$serializer, descriptor, Lkotlinx/serialization/descriptors/SerialDescriptor;) + RETURN + } + + private void () { + LABEL (L0) + ALOAD (0) + INVOKESPECIAL (java/lang/Object, , ()V) + RETURN + LABEL (L1) + } + + public final kotlinx.serialization.KSerializer[] childSerializers() { + LABEL (L0) + INVOKESTATIC (ListOfUsers, access$get$childSerializers$cp, ()[Lkotlinx/serialization/KSerializer;) + ASTORE (1) + ICONST_1 + ANEWARRAY (kotlinx/serialization/KSerializer) + ASTORE (2) + ALOAD (2) + ICONST_0 + ALOAD (1) + ICONST_0 + AALOAD + AASTORE + ALOAD (2) + ARETURN + LABEL (L1) + } + + public final ListOfUsers deserialize(kotlinx.serialization.encoding.Decoder decoder) { + LABEL (L0) + ALOAD (1) + LDC (decoder) + INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V) + GETSTATIC (ListOfUsers$$serializer, descriptor, Lkotlinx/serialization/descriptors/SerialDescriptor;) + ASTORE (2) + ICONST_1 + ISTORE (3) + ICONST_0 + ISTORE (5) + ACONST_NULL + ASTORE (6) + ALOAD (1) + ALOAD (2) + INVOKEINTERFACE (kotlinx/serialization/encoding/Decoder, beginStructure, (Lkotlinx/serialization/descriptors/SerialDescriptor;)Lkotlinx/serialization/encoding/CompositeDecoder;) + ASTORE (7) + INVOKESTATIC (ListOfUsers, access$get$childSerializers$cp, ()[Lkotlinx/serialization/KSerializer;) + ASTORE (8) + ALOAD (7) + INVOKEINTERFACE (kotlinx/serialization/encoding/CompositeDecoder, decodeSequentially, ()Z) + IFEQ (L1) + ALOAD (7) + ALOAD (2) + ICONST_0 + ALOAD (8) + ICONST_0 + AALOAD + CHECKCAST (kotlinx/serialization/DeserializationStrategy) + ALOAD (6) + INVOKEINTERFACE (kotlinx/serialization/encoding/CompositeDecoder, decodeSerializableElement, (Lkotlinx/serialization/descriptors/SerialDescriptor;ILkotlinx/serialization/DeserializationStrategy;Ljava/lang/Object;)Ljava/lang/Object;) + ASTORE (6) + ILOAD (5) + ICONST_1 + IOR + ISTORE (5) + GOTO (L2) + LABEL (L1) + ILOAD (3) + IFEQ (L2) + ALOAD (7) + ALOAD (2) + INVOKEINTERFACE (kotlinx/serialization/encoding/CompositeDecoder, decodeElementIndex, (Lkotlinx/serialization/descriptors/SerialDescriptor;)I) + ISTORE (4) + ILOAD (4) + TABLESWITCH + -1: L3 + 0: L4 + default: L5 + LABEL (L3) + ICONST_0 + ISTORE (3) + GOTO (L1) + LABEL (L4) + ALOAD (7) + ALOAD (2) + ICONST_0 + ALOAD (8) + ICONST_0 + AALOAD + CHECKCAST (kotlinx/serialization/DeserializationStrategy) + ALOAD (6) + INVOKEINTERFACE (kotlinx/serialization/encoding/CompositeDecoder, decodeSerializableElement, (Lkotlinx/serialization/descriptors/SerialDescriptor;ILkotlinx/serialization/DeserializationStrategy;Ljava/lang/Object;)Ljava/lang/Object;) + ASTORE (6) + ILOAD (5) + ICONST_1 + IOR + ISTORE (5) + GOTO (L1) + LABEL (L5) + NEW (kotlinx/serialization/UnknownFieldException) + DUP + ILOAD (4) + INVOKESPECIAL (kotlinx/serialization/UnknownFieldException, , (I)V) + ATHROW + LABEL (L2) + ALOAD (7) + ALOAD (2) + INVOKEINTERFACE (kotlinx/serialization/encoding/CompositeDecoder, endStructure, (Lkotlinx/serialization/descriptors/SerialDescriptor;)V) + NEW (ListOfUsers) + DUP + ILOAD (5) + ALOAD (6) + CHECKCAST (java/util/List) + ACONST_NULL + INVOKESPECIAL (ListOfUsers, , (ILjava/util/List;Lkotlinx/serialization/internal/SerializationConstructorMarker;)V) + ARETURN + LABEL (L6) + } + + public java.lang.Object deserialize(kotlinx.serialization.encoding.Decoder decoder) { + LABEL (L0) + ALOAD (0) + ALOAD (1) + INVOKEVIRTUAL (ListOfUsers$$serializer, deserialize, (Lkotlinx/serialization/encoding/Decoder;)LListOfUsers;) + ARETURN + LABEL (L1) + } + + public final kotlinx.serialization.descriptors.SerialDescriptor getDescriptor() { + LABEL (L0) + GETSTATIC (ListOfUsers$$serializer, descriptor, Lkotlinx/serialization/descriptors/SerialDescriptor;) + ARETURN + LABEL (L1) + } + + public final void serialize(kotlinx.serialization.encoding.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 (value) + INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V) + GETSTATIC (ListOfUsers$$serializer, descriptor, Lkotlinx/serialization/descriptors/SerialDescriptor;) + ASTORE (3) + ALOAD (1) + ALOAD (3) + INVOKEINTERFACE (kotlinx/serialization/encoding/Encoder, beginStructure, (Lkotlinx/serialization/descriptors/SerialDescriptor;)Lkotlinx/serialization/encoding/CompositeEncoder;) + ASTORE (4) + ALOAD (2) + ALOAD (4) + ALOAD (3) + INVOKESTATIC (ListOfUsers, write$Self, (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) + RETURN + LABEL (L1) + } + + public void serialize(kotlinx.serialization.encoding.Encoder encoder, java.lang.Object value) { + LABEL (L0) + ALOAD (0) + ALOAD (1) + ALOAD (2) + CHECKCAST (ListOfUsers) + INVOKEVIRTUAL (ListOfUsers$$serializer, serialize, (Lkotlinx/serialization/encoding/Encoder;LListOfUsers;)V) + RETURN + LABEL (L1) + } + + public kotlinx.serialization.KSerializer[] typeParametersSerializers() +} + +public final class ListOfUsers$Companion : java/lang/Object { + private void () { + LABEL (L0) + ALOAD (0) + INVOKESPECIAL (java/lang/Object, , ()V) + RETURN + LABEL (L1) + } + + public void (kotlin.jvm.internal.DefaultConstructorMarker $constructor_marker) { + LABEL (L0) + ALOAD (0) + INVOKESPECIAL (ListOfUsers$Companion, , ()V) + RETURN + LABEL (L1) + } + + public final kotlinx.serialization.KSerializer serializer() +} + +public final class ListOfUsers : java/lang/Object { + private final static kotlinx.serialization.KSerializer[] $childSerializers + + public final static ListOfUsers$Companion Companion + + private final java.util.List list + + static void () { + NEW (ListOfUsers$Companion) + DUP + ACONST_NULL + INVOKESPECIAL (ListOfUsers$Companion, , (Lkotlin/jvm/internal/DefaultConstructorMarker;)V) + PUTSTATIC (ListOfUsers, Companion, LListOfUsers$Companion;) + ICONST_1 + ANEWARRAY (kotlinx/serialization/KSerializer) + ASTORE (0) + ALOAD (0) + ICONST_0 + NEW (kotlinx/serialization/internal/ArrayListSerializer) + DUP + GETSTATIC (User$$serializer, INSTANCE, LUser$$serializer;) + CHECKCAST (kotlinx/serialization/KSerializer) + INVOKESPECIAL (kotlinx/serialization/internal/ArrayListSerializer, , (Lkotlinx/serialization/KSerializer;)V) + AASTORE + ALOAD (0) + PUTSTATIC (ListOfUsers, $childSerializers, [Lkotlinx/serialization/KSerializer;) + RETURN + } + + public void (java.util.List list) { + LABEL (L0) + ALOAD (1) + LDC (list) + INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V) + LABEL (L1) + LINENUMBER (13) + ALOAD (0) + INVOKESPECIAL (java/lang/Object, , ()V) + ALOAD (0) + ALOAD (1) + PUTFIELD (ListOfUsers, list, Ljava/util/List;) + RETURN + LABEL (L2) + } + + public void (int seen0, java.util.List list, kotlinx.serialization.internal.SerializationConstructorMarker serializationConstructorMarker) { + LABEL (L0) + LINENUMBER (12) + ICONST_1 + ICONST_1 + ILOAD (1) + IAND + IF_ICMPEQ (L1) + ILOAD (1) + ICONST_1 + GETSTATIC (ListOfUsers$$serializer, INSTANCE, LListOfUsers$$serializer;) + INVOKEVIRTUAL (ListOfUsers$$serializer, getDescriptor, ()Lkotlinx/serialization/descriptors/SerialDescriptor;) + INVOKESTATIC (kotlinx/serialization/internal/PluginExceptionsKt, throwMissingFieldException, (IILkotlinx/serialization/descriptors/SerialDescriptor;)V) + LABEL (L1) + ALOAD (0) + INVOKESPECIAL (java/lang/Object, , ()V) + ALOAD (0) + ALOAD (2) + PUTFIELD (ListOfUsers, list, Ljava/util/List;) + RETURN + LABEL (L2) + } + + public final static kotlinx.serialization.KSerializer[] access$get$childSerializers$cp() + + public final java.util.List getList() + + public final static void write$Self(ListOfUsers self, kotlinx.serialization.encoding.CompositeEncoder output, kotlinx.serialization.descriptors.SerialDescriptor serialDesc) { + LABEL (L0) + LINENUMBER (12) + GETSTATIC (ListOfUsers, $childSerializers, [Lkotlinx/serialization/KSerializer;) + ASTORE (3) + ALOAD (1) + ALOAD (2) + ICONST_0 + ALOAD (3) + ICONST_0 + AALOAD + CHECKCAST (kotlinx/serialization/SerializationStrategy) + ALOAD (0) + 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 (L1) + } +} + +public final class OptionalUser$$serializer : java/lang/Object, kotlinx/serialization/internal/GeneratedSerializer { + public final static OptionalUser$$serializer INSTANCE + + private final static kotlinx.serialization.descriptors.SerialDescriptor descriptor + + static void () { + NEW (OptionalUser$$serializer) + DUP + INVOKESPECIAL (OptionalUser$$serializer, , ()V) + PUTSTATIC (OptionalUser$$serializer, INSTANCE, LOptionalUser$$serializer;) + NEW (kotlinx/serialization/internal/PluginGeneratedSerialDescriptor) + DUP + LDC (OptionalUser) + GETSTATIC (OptionalUser$$serializer, INSTANCE, LOptionalUser$$serializer;) + CHECKCAST (kotlinx/serialization/internal/GeneratedSerializer) + ICONST_1 + INVOKESPECIAL (kotlinx/serialization/internal/PluginGeneratedSerialDescriptor, , (Ljava/lang/String;Lkotlinx/serialization/internal/GeneratedSerializer;I)V) + ASTORE (0) + ALOAD (0) + LDC (user) + ICONST_1 + INVOKEVIRTUAL (kotlinx/serialization/internal/PluginGeneratedSerialDescriptor, addElement, (Ljava/lang/String;Z)V) + ALOAD (0) + CHECKCAST (kotlinx/serialization/descriptors/SerialDescriptor) + PUTSTATIC (OptionalUser$$serializer, descriptor, Lkotlinx/serialization/descriptors/SerialDescriptor;) + RETURN + } + + private void () { + LABEL (L0) + ALOAD (0) + INVOKESPECIAL (java/lang/Object, , ()V) + RETURN + LABEL (L1) + } + + public final kotlinx.serialization.KSerializer[] childSerializers() { + LABEL (L0) + ICONST_1 + ANEWARRAY (kotlinx/serialization/KSerializer) + ASTORE (1) + ALOAD (1) + ICONST_0 + GETSTATIC (User$$serializer, INSTANCE, LUser$$serializer;) + AASTORE + ALOAD (1) + ARETURN + LABEL (L1) + } + + public final OptionalUser deserialize(kotlinx.serialization.encoding.Decoder decoder) { + LABEL (L0) + ALOAD (1) + LDC (decoder) + INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V) + GETSTATIC (OptionalUser$$serializer, descriptor, Lkotlinx/serialization/descriptors/SerialDescriptor;) + ASTORE (2) + ICONST_1 + ISTORE (3) + ICONST_0 + ISTORE (5) + ACONST_NULL + ASTORE (6) + ALOAD (1) + ALOAD (2) + INVOKEINTERFACE (kotlinx/serialization/encoding/Decoder, beginStructure, (Lkotlinx/serialization/descriptors/SerialDescriptor;)Lkotlinx/serialization/encoding/CompositeDecoder;) + ASTORE (7) + ALOAD (7) + INVOKEINTERFACE (kotlinx/serialization/encoding/CompositeDecoder, decodeSequentially, ()Z) + IFEQ (L1) + ALOAD (7) + ALOAD (2) + ICONST_0 + GETSTATIC (User$$serializer, INSTANCE, LUser$$serializer;) + CHECKCAST (kotlinx/serialization/DeserializationStrategy) + ALOAD (6) + INVOKEINTERFACE (kotlinx/serialization/encoding/CompositeDecoder, decodeSerializableElement, (Lkotlinx/serialization/descriptors/SerialDescriptor;ILkotlinx/serialization/DeserializationStrategy;Ljava/lang/Object;)Ljava/lang/Object;) + ASTORE (6) + ILOAD (5) + ICONST_1 + IOR + ISTORE (5) + GOTO (L2) + LABEL (L1) + ILOAD (3) + IFEQ (L2) + ALOAD (7) + ALOAD (2) + INVOKEINTERFACE (kotlinx/serialization/encoding/CompositeDecoder, decodeElementIndex, (Lkotlinx/serialization/descriptors/SerialDescriptor;)I) + ISTORE (4) + ILOAD (4) + TABLESWITCH + -1: L3 + 0: L4 + default: L5 + LABEL (L3) + ICONST_0 + ISTORE (3) + GOTO (L1) + LABEL (L4) + ALOAD (7) + ALOAD (2) + ICONST_0 + GETSTATIC (User$$serializer, INSTANCE, LUser$$serializer;) + CHECKCAST (kotlinx/serialization/DeserializationStrategy) + ALOAD (6) + INVOKEINTERFACE (kotlinx/serialization/encoding/CompositeDecoder, decodeSerializableElement, (Lkotlinx/serialization/descriptors/SerialDescriptor;ILkotlinx/serialization/DeserializationStrategy;Ljava/lang/Object;)Ljava/lang/Object;) + ASTORE (6) + ILOAD (5) + ICONST_1 + IOR + ISTORE (5) + GOTO (L1) + LABEL (L5) + NEW (kotlinx/serialization/UnknownFieldException) + DUP + ILOAD (4) + INVOKESPECIAL (kotlinx/serialization/UnknownFieldException, , (I)V) + ATHROW + LABEL (L2) + ALOAD (7) + ALOAD (2) + INVOKEINTERFACE (kotlinx/serialization/encoding/CompositeDecoder, endStructure, (Lkotlinx/serialization/descriptors/SerialDescriptor;)V) + NEW (OptionalUser) + DUP + ILOAD (5) + ALOAD (6) + CHECKCAST (User) + ACONST_NULL + INVOKESPECIAL (OptionalUser, , (ILUser;Lkotlinx/serialization/internal/SerializationConstructorMarker;)V) + ARETURN + LABEL (L6) + } + + public java.lang.Object deserialize(kotlinx.serialization.encoding.Decoder decoder) { + LABEL (L0) + ALOAD (0) + ALOAD (1) + INVOKEVIRTUAL (OptionalUser$$serializer, deserialize, (Lkotlinx/serialization/encoding/Decoder;)LOptionalUser;) + ARETURN + LABEL (L1) + } + + public final kotlinx.serialization.descriptors.SerialDescriptor getDescriptor() { + LABEL (L0) + GETSTATIC (OptionalUser$$serializer, descriptor, Lkotlinx/serialization/descriptors/SerialDescriptor;) + ARETURN + LABEL (L1) + } + + public final void serialize(kotlinx.serialization.encoding.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 (value) + INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V) + GETSTATIC (OptionalUser$$serializer, descriptor, Lkotlinx/serialization/descriptors/SerialDescriptor;) + ASTORE (3) + ALOAD (1) + ALOAD (3) + INVOKEINTERFACE (kotlinx/serialization/encoding/Encoder, beginStructure, (Lkotlinx/serialization/descriptors/SerialDescriptor;)Lkotlinx/serialization/encoding/CompositeEncoder;) + ASTORE (4) + ALOAD (2) + ALOAD (4) + ALOAD (3) + INVOKESTATIC (OptionalUser, write$Self, (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) + RETURN + LABEL (L1) + } + + public void serialize(kotlinx.serialization.encoding.Encoder encoder, java.lang.Object value) { + LABEL (L0) + ALOAD (0) + ALOAD (1) + ALOAD (2) + CHECKCAST (OptionalUser) + INVOKEVIRTUAL (OptionalUser$$serializer, serialize, (Lkotlinx/serialization/encoding/Encoder;LOptionalUser;)V) + RETURN + LABEL (L1) + } + + public kotlinx.serialization.KSerializer[] typeParametersSerializers() +} + +public final class OptionalUser$Companion : java/lang/Object { + private void () { + LABEL (L0) + ALOAD (0) + INVOKESPECIAL (java/lang/Object, , ()V) + RETURN + LABEL (L1) + } + + public void (kotlin.jvm.internal.DefaultConstructorMarker $constructor_marker) { + LABEL (L0) + ALOAD (0) + INVOKESPECIAL (OptionalUser$Companion, , ()V) + RETURN + LABEL (L1) + } + + public final kotlinx.serialization.KSerializer serializer() +} + +public final class OptionalUser : java/lang/Object { + public final static OptionalUser$Companion Companion + + private final User user + + static void () { + NEW (OptionalUser$Companion) + DUP + ACONST_NULL + INVOKESPECIAL (OptionalUser$Companion, , (Lkotlin/jvm/internal/DefaultConstructorMarker;)V) + PUTSTATIC (OptionalUser, Companion, LOptionalUser$Companion;) + RETURN + } + + public void (User user) { + LABEL (L0) + ALOAD (1) + LDC (user) + INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V) + LABEL (L1) + LINENUMBER (10) + ALOAD (0) + INVOKESPECIAL (java/lang/Object, , ()V) + ALOAD (0) + ALOAD (1) + PUTFIELD (OptionalUser, user, LUser;) + RETURN + LABEL (L2) + } + + public void (User p0, int p1, kotlin.jvm.internal.DefaultConstructorMarker p2) { + LABEL (L0) + LINENUMBER (10) + ILOAD (2) + ICONST_1 + IAND + IFEQ (L1) + NEW (User) + DUP + LDC () + LDC () + INVOKESPECIAL (User, , (Ljava/lang/String;Ljava/lang/String;)V) + ASTORE (1) + LABEL (L1) + ALOAD (0) + ALOAD (1) + INVOKESPECIAL (OptionalUser, , (LUser;)V) + RETURN + } + + public void (int seen0, User user, kotlinx.serialization.internal.SerializationConstructorMarker serializationConstructorMarker) { + LABEL (L0) + LINENUMBER (9) + ICONST_0 + ILOAD (1) + IAND + IFEQ (L1) + ILOAD (1) + ICONST_0 + GETSTATIC (OptionalUser$$serializer, INSTANCE, LOptionalUser$$serializer;) + INVOKEVIRTUAL (OptionalUser$$serializer, getDescriptor, ()Lkotlinx/serialization/descriptors/SerialDescriptor;) + INVOKESTATIC (kotlinx/serialization/internal/PluginExceptionsKt, throwMissingFieldException, (IILkotlinx/serialization/descriptors/SerialDescriptor;)V) + LABEL (L1) + ALOAD (0) + INVOKESPECIAL (java/lang/Object, , ()V) + ILOAD (1) + ICONST_1 + IAND + IFNE (L2) + ALOAD (0) + LABEL (L3) + LINENUMBER (10) + NEW (User) + DUP + LDC () + LDC () + INVOKESPECIAL (User, , (Ljava/lang/String;Ljava/lang/String;)V) + LABEL (L4) + LINENUMBER (9) + PUTFIELD (OptionalUser, user, LUser;) + GOTO (L5) + LABEL (L2) + ALOAD (0) + ALOAD (2) + PUTFIELD (OptionalUser, user, LUser;) + LABEL (L5) + RETURN + LABEL (L6) + } + + public void () { + LABEL (L0) + ALOAD (0) + ACONST_NULL + ICONST_1 + ACONST_NULL + INVOKESPECIAL (OptionalUser, , (LUser;ILkotlin/jvm/internal/DefaultConstructorMarker;)V) + RETURN + LABEL (L1) + } + + public final User getUser() + + public final static void write$Self(OptionalUser self, kotlinx.serialization.encoding.CompositeEncoder output, kotlinx.serialization.descriptors.SerialDescriptor serialDesc) { + LABEL (L0) + LINENUMBER (9) + ALOAD (1) + ALOAD (2) + ICONST_0 + INVOKEINTERFACE (kotlinx/serialization/encoding/CompositeEncoder, shouldEncodeElementDefault, (Lkotlinx/serialization/descriptors/SerialDescriptor;I)Z) + IFEQ (L1) + ICONST_1 + GOTO (L2) + LABEL (L1) + ALOAD (0) + GETFIELD (OptionalUser, user, LUser;) + LABEL (L3) + LINENUMBER (10) + NEW (User) + DUP + LDC () + LDC () + INVOKESPECIAL (User, , (Ljava/lang/String;Ljava/lang/String;)V) + INVOKESTATIC (kotlin/jvm/internal/Intrinsics, areEqual, (Ljava/lang/Object;Ljava/lang/Object;)Z) + IFNE (L4) + ICONST_1 + GOTO (L2) + LABEL (L4) + ICONST_0 + LABEL (L2) + IFEQ (L5) + LABEL (L6) + LINENUMBER (9) + ALOAD (1) + ALOAD (2) + ICONST_0 + GETSTATIC (User$$serializer, INSTANCE, LUser$$serializer;) + CHECKCAST (kotlinx/serialization/SerializationStrategy) + ALOAD (0) + GETFIELD (OptionalUser, user, LUser;) + INVOKEINTERFACE (kotlinx/serialization/encoding/CompositeEncoder, encodeSerializableElement, (Lkotlinx/serialization/descriptors/SerialDescriptor;ILkotlinx/serialization/SerializationStrategy;Ljava/lang/Object;)V) + LABEL (L5) + RETURN + LABEL (L7) + } +} + +public final class User$$serializer : java/lang/Object, kotlinx/serialization/internal/GeneratedSerializer { + public final static User$$serializer INSTANCE + + private final static kotlinx.serialization.descriptors.SerialDescriptor descriptor + + static void () { + NEW (User$$serializer) + DUP + INVOKESPECIAL (User$$serializer, , ()V) + PUTSTATIC (User$$serializer, INSTANCE, LUser$$serializer;) + NEW (kotlinx/serialization/internal/PluginGeneratedSerialDescriptor) + DUP + LDC (User) + GETSTATIC (User$$serializer, INSTANCE, LUser$$serializer;) + CHECKCAST (kotlinx/serialization/internal/GeneratedSerializer) + ICONST_2 + INVOKESPECIAL (kotlinx/serialization/internal/PluginGeneratedSerialDescriptor, , (Ljava/lang/String;Lkotlinx/serialization/internal/GeneratedSerializer;I)V) + ASTORE (0) + ALOAD (0) + LDC (firstName) + ICONST_0 + INVOKEVIRTUAL (kotlinx/serialization/internal/PluginGeneratedSerialDescriptor, addElement, (Ljava/lang/String;Z)V) + ALOAD (0) + LDC (lastName) + ICONST_0 + INVOKEVIRTUAL (kotlinx/serialization/internal/PluginGeneratedSerialDescriptor, addElement, (Ljava/lang/String;Z)V) + ALOAD (0) + CHECKCAST (kotlinx/serialization/descriptors/SerialDescriptor) + PUTSTATIC (User$$serializer, descriptor, Lkotlinx/serialization/descriptors/SerialDescriptor;) + RETURN + } + + private void () { + LABEL (L0) + ALOAD (0) + INVOKESPECIAL (java/lang/Object, , ()V) + RETURN + LABEL (L1) + } + + public final kotlinx.serialization.KSerializer[] childSerializers() { + LABEL (L0) + ICONST_2 + ANEWARRAY (kotlinx/serialization/KSerializer) + ASTORE (1) + ALOAD (1) + ICONST_0 + GETSTATIC (kotlinx/serialization/internal/StringSerializer, INSTANCE, Lkotlinx/serialization/internal/StringSerializer;) + AASTORE + ALOAD (1) + ICONST_1 + GETSTATIC (kotlinx/serialization/internal/StringSerializer, INSTANCE, Lkotlinx/serialization/internal/StringSerializer;) + AASTORE + ALOAD (1) + ARETURN + LABEL (L1) + } + + public final User deserialize(kotlinx.serialization.encoding.Decoder decoder) { + LABEL (L0) + ALOAD (1) + LDC (decoder) + INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V) + GETSTATIC (User$$serializer, descriptor, Lkotlinx/serialization/descriptors/SerialDescriptor;) + ASTORE (2) + ICONST_1 + ISTORE (3) + ICONST_0 + ISTORE (5) + ACONST_NULL + ASTORE (6) + ACONST_NULL + ASTORE (7) + ALOAD (1) + ALOAD (2) + INVOKEINTERFACE (kotlinx/serialization/encoding/Decoder, beginStructure, (Lkotlinx/serialization/descriptors/SerialDescriptor;)Lkotlinx/serialization/encoding/CompositeDecoder;) + ASTORE (8) + ALOAD (8) + INVOKEINTERFACE (kotlinx/serialization/encoding/CompositeDecoder, decodeSequentially, ()Z) + IFEQ (L1) + ALOAD (8) + ALOAD (2) + ICONST_0 + INVOKEINTERFACE (kotlinx/serialization/encoding/CompositeDecoder, decodeStringElement, (Lkotlinx/serialization/descriptors/SerialDescriptor;I)Ljava/lang/String;) + ASTORE (6) + ILOAD (5) + ICONST_1 + IOR + ISTORE (5) + ALOAD (8) + ALOAD (2) + ICONST_1 + INVOKEINTERFACE (kotlinx/serialization/encoding/CompositeDecoder, decodeStringElement, (Lkotlinx/serialization/descriptors/SerialDescriptor;I)Ljava/lang/String;) + ASTORE (7) + ILOAD (5) + ICONST_2 + IOR + ISTORE (5) + GOTO (L2) + LABEL (L1) + ILOAD (3) + IFEQ (L2) + ALOAD (8) + ALOAD (2) + INVOKEINTERFACE (kotlinx/serialization/encoding/CompositeDecoder, decodeElementIndex, (Lkotlinx/serialization/descriptors/SerialDescriptor;)I) + ISTORE (4) + ILOAD (4) + TABLESWITCH + -1: L3 + 0: L4 + 1: L5 + default: L6 + LABEL (L3) + ICONST_0 + ISTORE (3) + GOTO (L1) + LABEL (L4) + ALOAD (8) + ALOAD (2) + ICONST_0 + INVOKEINTERFACE (kotlinx/serialization/encoding/CompositeDecoder, decodeStringElement, (Lkotlinx/serialization/descriptors/SerialDescriptor;I)Ljava/lang/String;) + ASTORE (6) + ILOAD (5) + ICONST_1 + IOR + ISTORE (5) + GOTO (L1) + LABEL (L5) + ALOAD (8) + ALOAD (2) + ICONST_1 + INVOKEINTERFACE (kotlinx/serialization/encoding/CompositeDecoder, decodeStringElement, (Lkotlinx/serialization/descriptors/SerialDescriptor;I)Ljava/lang/String;) + ASTORE (7) + ILOAD (5) + ICONST_2 + IOR + ISTORE (5) + GOTO (L1) + LABEL (L6) + NEW (kotlinx/serialization/UnknownFieldException) + DUP + ILOAD (4) + INVOKESPECIAL (kotlinx/serialization/UnknownFieldException, , (I)V) + ATHROW + LABEL (L2) + ALOAD (8) + ALOAD (2) + INVOKEINTERFACE (kotlinx/serialization/encoding/CompositeDecoder, endStructure, (Lkotlinx/serialization/descriptors/SerialDescriptor;)V) + NEW (User) + DUP + ILOAD (5) + ALOAD (6) + ALOAD (7) + ACONST_NULL + INVOKESPECIAL (User, , (ILjava/lang/String;Ljava/lang/String;Lkotlinx/serialization/internal/SerializationConstructorMarker;)V) + ARETURN + LABEL (L7) + } + + public java.lang.Object deserialize(kotlinx.serialization.encoding.Decoder decoder) { + LABEL (L0) + ALOAD (0) + ALOAD (1) + INVOKEVIRTUAL (User$$serializer, deserialize, (Lkotlinx/serialization/encoding/Decoder;)LUser;) + ARETURN + LABEL (L1) + } + + public final kotlinx.serialization.descriptors.SerialDescriptor getDescriptor() { + LABEL (L0) + GETSTATIC (User$$serializer, descriptor, Lkotlinx/serialization/descriptors/SerialDescriptor;) + ARETURN + LABEL (L1) + } + + public final void serialize(kotlinx.serialization.encoding.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 (value) + INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V) + GETSTATIC (User$$serializer, descriptor, Lkotlinx/serialization/descriptors/SerialDescriptor;) + ASTORE (3) + ALOAD (1) + ALOAD (3) + INVOKEINTERFACE (kotlinx/serialization/encoding/Encoder, beginStructure, (Lkotlinx/serialization/descriptors/SerialDescriptor;)Lkotlinx/serialization/encoding/CompositeEncoder;) + ASTORE (4) + ALOAD (2) + ALOAD (4) + ALOAD (3) + INVOKESTATIC (User, write$Self, (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) + RETURN + LABEL (L1) + } + + public void serialize(kotlinx.serialization.encoding.Encoder encoder, java.lang.Object value) { + LABEL (L0) + ALOAD (0) + ALOAD (1) + ALOAD (2) + CHECKCAST (User) + INVOKEVIRTUAL (User$$serializer, serialize, (Lkotlinx/serialization/encoding/Encoder;LUser;)V) + RETURN + LABEL (L1) + } + + public kotlinx.serialization.KSerializer[] typeParametersSerializers() +} + +public final class User$Companion : java/lang/Object { + private void () { + LABEL (L0) + ALOAD (0) + INVOKESPECIAL (java/lang/Object, , ()V) + RETURN + LABEL (L1) + } + + public void (kotlin.jvm.internal.DefaultConstructorMarker $constructor_marker) { + LABEL (L0) + ALOAD (0) + INVOKESPECIAL (User$Companion, , ()V) + RETURN + LABEL (L1) + } + + public final kotlinx.serialization.KSerializer serializer() +} + +public final class User : java/lang/Object { + public final static User$Companion Companion + + private final java.lang.String firstName + + private final java.lang.String lastName + + static void () { + NEW (User$Companion) + DUP + ACONST_NULL + INVOKESPECIAL (User$Companion, , (Lkotlin/jvm/internal/DefaultConstructorMarker;)V) + PUTSTATIC (User, Companion, LUser$Companion;) + RETURN + } + + public void (java.lang.String firstName, java.lang.String lastName) { + LABEL (L0) + ALOAD (1) + LDC (firstName) + INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V) + ALOAD (2) + LDC (lastName) + INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V) + LABEL (L1) + LINENUMBER (7) + ALOAD (0) + INVOKESPECIAL (java/lang/Object, , ()V) + ALOAD (0) + ALOAD (1) + PUTFIELD (User, firstName, Ljava/lang/String;) + ALOAD (0) + ALOAD (2) + PUTFIELD (User, lastName, Ljava/lang/String;) + RETURN + LABEL (L2) + } + + public void (int seen0, java.lang.String firstName, java.lang.String lastName, kotlinx.serialization.internal.SerializationConstructorMarker serializationConstructorMarker) { + LABEL (L0) + LINENUMBER (6) + ICONST_3 + ICONST_3 + ILOAD (1) + IAND + IF_ICMPEQ (L1) + ILOAD (1) + ICONST_3 + GETSTATIC (User$$serializer, INSTANCE, LUser$$serializer;) + INVOKEVIRTUAL (User$$serializer, getDescriptor, ()Lkotlinx/serialization/descriptors/SerialDescriptor;) + INVOKESTATIC (kotlinx/serialization/internal/PluginExceptionsKt, throwMissingFieldException, (IILkotlinx/serialization/descriptors/SerialDescriptor;)V) + LABEL (L1) + ALOAD (0) + INVOKESPECIAL (java/lang/Object, , ()V) + ALOAD (0) + ALOAD (2) + PUTFIELD (User, firstName, Ljava/lang/String;) + ALOAD (0) + ALOAD (3) + PUTFIELD (User, lastName, Ljava/lang/String;) + RETURN + LABEL (L2) + } + + public final java.lang.String getFirstName() + + public final java.lang.String getLastName() + + public final static void write$Self(User self, kotlinx.serialization.encoding.CompositeEncoder output, kotlinx.serialization.descriptors.SerialDescriptor serialDesc) { + LABEL (L0) + LINENUMBER (6) + ALOAD (1) + ALOAD (2) + ICONST_0 + ALOAD (0) + GETFIELD (User, firstName, Ljava/lang/String;) + INVOKEINTERFACE (kotlinx/serialization/encoding/CompositeEncoder, encodeStringElement, (Lkotlinx/serialization/descriptors/SerialDescriptor;ILjava/lang/String;)V) + ALOAD (1) + ALOAD (2) + ICONST_1 + ALOAD (0) + GETFIELD (User, lastName, Ljava/lang/String;) + INVOKEINTERFACE (kotlinx/serialization/encoding/CompositeEncoder, encodeStringElement, (Lkotlinx/serialization/descriptors/SerialDescriptor;ILjava/lang/String;)V) + RETURN + LABEL (L1) + } +} diff --git a/plugins/kotlinx-serialization/testData/codegen/Delegated.asm.ir.txt b/plugins/kotlinx-serialization/testData/codegen/Delegated.asm.ir.txt deleted file mode 100644 index a91808b9c84..00000000000 --- a/plugins/kotlinx-serialization/testData/codegen/Delegated.asm.ir.txt +++ /dev/null @@ -1,138 +0,0 @@ -public abstract interface A : java/lang/Object { - public abstract java.lang.String getText() -} - -public final class DelegatedKt : java/lang/Object { - public final static A generateImpl() - - private final static java.lang.String generateImpl$lambda$0() -} - -public final class Test$$serializer : java/lang/Object, kotlinx/serialization/internal/GeneratedSerializer { - public final static Test$$serializer INSTANCE - - private final static kotlinx.serialization.internal.PluginGeneratedSerialDescriptor descriptor - - static void () { - NEW (Test$$serializer) - DUP - INVOKESPECIAL (Test$$serializer, , ()V) - PUTSTATIC (Test$$serializer, INSTANCE, LTest$$serializer;) - LABEL (L0) - LINENUMBER (12) - NEW (kotlinx/serialization/internal/PluginGeneratedSerialDescriptor) - DUP - LDC (Test) - GETSTATIC (Test$$serializer, INSTANCE, LTest$$serializer;) - CHECKCAST (kotlinx/serialization/internal/GeneratedSerializer) - ICONST_0 - INVOKESPECIAL (kotlinx/serialization/internal/PluginGeneratedSerialDescriptor, , (Ljava/lang/String;Lkotlinx/serialization/internal/GeneratedSerializer;I)V) - PUTSTATIC (Test$$serializer, descriptor, Lkotlinx/serialization/internal/PluginGeneratedSerialDescriptor;) - LABEL (L1) - LINENUMBER (13) - RETURN - } - - private void () { - LABEL (L0) - LINENUMBER (12) - ALOAD (0) - INVOKESPECIAL (java/lang/Object, , ()V) - RETURN - LABEL (L1) - } - - public kotlinx.serialization.KSerializer[] childSerializers() - - public Test deserialize(kotlinx.serialization.encoding.Decoder decoder) - - public java.lang.Object deserialize(kotlinx.serialization.encoding.Decoder decoder) - - public kotlinx.serialization.descriptors.SerialDescriptor getDescriptor() - - public void serialize(kotlinx.serialization.encoding.Encoder encoder, Test value) - - public void serialize(kotlinx.serialization.encoding.Encoder encoder, java.lang.Object value) - - public kotlinx.serialization.KSerializer[] typeParametersSerializers() -} - -public final class Test$Companion : java/lang/Object { - private void () { - LABEL (L0) - LINENUMBER (12) - ALOAD (0) - INVOKESPECIAL (java/lang/Object, , ()V) - RETURN - LABEL (L1) - } - - public void (kotlin.jvm.internal.DefaultConstructorMarker $constructor_marker) { - LABEL (L0) - ALOAD (0) - INVOKESPECIAL (Test$Companion, , ()V) - RETURN - LABEL (L1) - } - - public final kotlinx.serialization.KSerializer serializer() -} - -public final class Test : java/lang/Object, A { - private final A $$delegate_0 - - public final static Test$Companion Companion - - static void () { - NEW (Test$Companion) - DUP - ACONST_NULL - INVOKESPECIAL (Test$Companion, , (Lkotlin/jvm/internal/DefaultConstructorMarker;)V) - PUTSTATIC (Test, Companion, LTest$Companion;) - RETURN - } - - public void () { - LABEL (L0) - LINENUMBER (12) - ALOAD (0) - INVOKESPECIAL (java/lang/Object, , ()V) - LABEL (L1) - LINENUMBER (13) - ALOAD (0) - INVOKESTATIC (DelegatedKt, generateImpl, ()LA;) - PUTFIELD (Test, $$delegate_0, LA;) - RETURN - LABEL (L2) - } - - public void (int seen1, kotlinx.serialization.internal.SerializationConstructorMarker serializationConstructorMarker) { - LABEL (L0) - LINENUMBER (12) - ICONST_0 - ILOAD (1) - IAND - IFEQ (L1) - ILOAD (1) - ICONST_0 - GETSTATIC (Test$$serializer, INSTANCE, LTest$$serializer;) - INVOKEVIRTUAL (Test$$serializer, getDescriptor, ()Lkotlinx/serialization/descriptors/SerialDescriptor;) - INVOKESTATIC (kotlinx/serialization/internal/PluginExceptionsKt, throwMissingFieldException, (IILkotlinx/serialization/descriptors/SerialDescriptor;)V) - LABEL (L1) - ALOAD (0) - INVOKESPECIAL (java/lang/Object, , ()V) - ALOAD (0) - LABEL (L2) - LINENUMBER (13) - INVOKESTATIC (DelegatedKt, generateImpl, ()LA;) - LABEL (L3) - LINENUMBER (12) - PUTFIELD (Test, $$delegate_0, LA;) - RETURN - LABEL (L4) - } - - public java.lang.String getText() - - public final static void write$Self(Test self, kotlinx.serialization.encoding.CompositeEncoder output, kotlinx.serialization.descriptors.SerialDescriptor serialDesc) -} diff --git a/plugins/kotlinx-serialization/testData/codegen/Delegated.asm.txt b/plugins/kotlinx-serialization/testData/codegen/Delegated.asm.txt deleted file mode 100644 index 63e483e2f00..00000000000 --- a/plugins/kotlinx-serialization/testData/codegen/Delegated.asm.txt +++ /dev/null @@ -1,158 +0,0 @@ -public abstract interface A : java/lang/Object { - public abstract java.lang.String getText() -} - -final class DelegatedKt$generateImpl$1 : java/lang/Object, A { - public final static DelegatedKt$generateImpl$1 INSTANCE - - static void () { - NEW (DelegatedKt$generateImpl$1) - DUP - INVOKESPECIAL (DelegatedKt$generateImpl$1, , ()V) - PUTSTATIC (DelegatedKt$generateImpl$1, INSTANCE, LDelegatedKt$generateImpl$1;) - RETURN - } - - void () { - ALOAD (0) - INVOKESPECIAL (java/lang/Object, , ()V) - RETURN - } - - public final java.lang.String getText() -} - -public final class DelegatedKt : java/lang/Object { - public final static A generateImpl() -} - -public final class Test$$serializer : java/lang/Object, kotlinx/serialization/internal/GeneratedSerializer { - private final static kotlinx.serialization.descriptors.SerialDescriptor $$serialDesc - - public final static Test$$serializer INSTANCE - - static void () { - LABEL (L0) - LINENUMBER (13) - NEW (Test$$serializer) - DUP - INVOKESPECIAL (Test$$serializer, , ()V) - ASTORE (0) - ALOAD (0) - PUTSTATIC (Test$$serializer, INSTANCE, LTest$$serializer;) - NEW (kotlinx/serialization/internal/PluginGeneratedSerialDescriptor) - DUP - LDC (Test) - GETSTATIC (Test$$serializer, INSTANCE, LTest$$serializer;) - CHECKCAST (kotlinx/serialization/internal/GeneratedSerializer) - LDC (0) - INVOKESPECIAL (kotlinx/serialization/internal/PluginGeneratedSerialDescriptor, , (Ljava/lang/String;Lkotlinx/serialization/internal/GeneratedSerializer;I)V) - ASTORE (0) - ALOAD (0) - PUTSTATIC (Test$$serializer, $$serialDesc, Lkotlinx/serialization/descriptors/SerialDescriptor;) - RETURN - } - - private void () { - LABEL (L0) - LINENUMBER (13) - ALOAD (0) - INVOKESPECIAL (java/lang/Object, , ()V) - RETURN - LABEL (L1) - } - - public kotlinx.serialization.KSerializer[] childSerializers() - - public Test deserialize(kotlinx.serialization.encoding.Decoder decoder) - - public java.lang.Object deserialize(kotlinx.serialization.encoding.Decoder p0) - - public kotlinx.serialization.descriptors.SerialDescriptor getDescriptor() - - public void serialize(kotlinx.serialization.encoding.Encoder encoder, Test value) - - public void serialize(kotlinx.serialization.encoding.Encoder p0, java.lang.Object p1) - - public kotlinx.serialization.KSerializer[] typeParametersSerializers() -} - -public final class Test$Companion : java/lang/Object { - private void () { - LABEL (L0) - LINENUMBER (13) - ALOAD (0) - INVOKESPECIAL (java/lang/Object, , ()V) - RETURN - LABEL (L1) - } - - public void (kotlin.jvm.internal.DefaultConstructorMarker $constructor_marker) { - LABEL (L0) - LINENUMBER (13) - ALOAD (0) - INVOKESPECIAL (Test$Companion, , ()V) - RETURN - LABEL (L1) - } - - public final kotlinx.serialization.KSerializer serializer() -} - -public final class Test : java/lang/Object, A { - private final A $$delegate_0 - - public final static Test$Companion Companion - - static void () { - NEW (Test$Companion) - DUP - ACONST_NULL - INVOKESPECIAL (Test$Companion, , (Lkotlin/jvm/internal/DefaultConstructorMarker;)V) - PUTSTATIC (Test, Companion, LTest$Companion;) - RETURN - } - - public void () { - LABEL (L0) - LINENUMBER (13) - ALOAD (0) - INVOKESPECIAL (java/lang/Object, , ()V) - ALOAD (0) - LABEL (L1) - LINENUMBER (13) - INVOKESTATIC (DelegatedKt, generateImpl, ()LA;) - PUTFIELD (Test, $$delegate_0, LA;) - RETURN - LABEL (L2) - } - - public void (int seen1, kotlinx.serialization.internal.SerializationConstructorMarker serializationConstructorMarker) { - LABEL (L0) - ICONST_0 - DUP - ILOAD (1) - IAND - IF_ICMPEQ (L1) - ILOAD (1) - ICONST_0 - GETSTATIC (Test$$serializer, INSTANCE, LTest$$serializer;) - CHECKCAST (kotlinx/serialization/KSerializer) - INVOKEINTERFACE (kotlinx/serialization/KSerializer, getDescriptor, ()Lkotlinx/serialization/descriptors/SerialDescriptor;) - INVOKESTATIC (kotlinx/serialization/internal/PluginExceptionsKt, throwMissingFieldException, (IILkotlinx/serialization/descriptors/SerialDescriptor;)V) - LABEL (L1) - ALOAD (0) - INVOKESPECIAL (java/lang/Object, , ()V) - ALOAD (0) - LABEL (L2) - LINENUMBER (13) - INVOKESTATIC (DelegatedKt, generateImpl, ()LA;) - PUTFIELD (Test, $$delegate_0, LA;) - RETURN - LABEL (L3) - } - - public java.lang.String getText() - - public final static void write$Self(Test self, kotlinx.serialization.encoding.CompositeEncoder output, kotlinx.serialization.descriptors.SerialDescriptor serialDesc) -} diff --git a/plugins/kotlinx-serialization/testData/codegen/Delegated.kt b/plugins/kotlinx-serialization/testData/codegen/Delegated.kt deleted file mode 100644 index 50e9a8a1e64..00000000000 --- a/plugins/kotlinx-serialization/testData/codegen/Delegated.kt +++ /dev/null @@ -1,13 +0,0 @@ -// CURIOUS_ABOUT: , -// WITH_STDLIB - -import kotlinx.serialization.* - -fun interface A { - fun getText(): String -} - -fun generateImpl() = A { "Hello, world!" } - -@Serializable -class Test : A by generateImpl() diff --git a/plugins/kotlinx-serialization/testData/codegen/Intrinsics.asm.fir.txt b/plugins/kotlinx-serialization/testData/codegen/Intrinsics.asm.fir.txt new file mode 100644 index 00000000000..4d9aa952e46 --- /dev/null +++ b/plugins/kotlinx-serialization/testData/codegen/Intrinsics.asm.fir.txt @@ -0,0 +1,269 @@ +public final class Box$$serializer : java/lang/Object, kotlinx/serialization/internal/GeneratedSerializer { + private final kotlinx.serialization.descriptors.SerialDescriptor descriptor + + private final kotlinx.serialization.KSerializer typeSerial0 + + private void () + + private void (kotlinx.serialization.KSerializer typeSerial0) + + public void (kotlinx.serialization.KSerializer typeSerial0, kotlin.jvm.internal.DefaultConstructorMarker $constructor_marker) + + public final kotlinx.serialization.KSerializer[] childSerializers() + + public final Box deserialize(kotlinx.serialization.encoding.Decoder decoder) + + public java.lang.Object deserialize(kotlinx.serialization.encoding.Decoder decoder) + + public final kotlinx.serialization.descriptors.SerialDescriptor getDescriptor() + + private final kotlinx.serialization.KSerializer getTypeSerial0() + + public final void serialize(kotlinx.serialization.encoding.Encoder encoder, Box value) + + public void serialize(kotlinx.serialization.encoding.Encoder encoder, java.lang.Object value) + + public final kotlinx.serialization.KSerializer[] typeParametersSerializers() +} + +public final class Box$Companion : java/lang/Object { + private void () + + public void (kotlin.jvm.internal.DefaultConstructorMarker $constructor_marker) + + public final kotlinx.serialization.KSerializer serializer(kotlinx.serialization.KSerializer typeSerial0) +} + +public final class Box : java/lang/Object { + private final static kotlinx.serialization.descriptors.SerialDescriptor $cachedDescriptor + + public final static Box$Companion Companion + + private final java.lang.Object boxed + + static void () + + public void (java.lang.Object boxed) + + public void (int seen0, java.lang.Object boxed, kotlinx.serialization.internal.SerializationConstructorMarker serializationConstructorMarker) + + public final java.lang.Object component1() + + public final Box copy(java.lang.Object boxed) + + public static Box copy$default(Box p0, java.lang.Object p1, int p2, java.lang.Object p3) + + public boolean equals(java.lang.Object other) + + public final java.lang.Object getBoxed() + + public int hashCode() + + 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 class IntrinsicsKt : java/lang/Object { + public final static kotlinx.serialization.KSerializer getBoxSer() + + public final static kotlinx.serialization.KSerializer getSer() + + public final static kotlinx.serialization.KSerializer listSer() + + public final static void test() { + LABEL (L0) + LINENUMBER (28) + GETSTATIC (Simple, Companion, LSimple$Companion;) + INVOKEVIRTUAL (Simple$Companion, serializer, ()Lkotlinx/serialization/KSerializer;) + POP + LABEL (L1) + LINENUMBER (29) + ICONST_0 + ISTORE (0) + LABEL (L2) + LINENUMBER (47) + GETSTATIC (Simple, Companion, LSimple$Companion;) + INVOKEVIRTUAL (Simple$Companion, serializer, ()Lkotlinx/serialization/KSerializer;) + LABEL (L3) + POP + LABEL (L4) + LINENUMBER (30) + ICONST_0 + ISTORE (0) + LABEL (L5) + LINENUMBER (48) + GETSTATIC (Box, Companion, LBox$Companion;) + GETSTATIC (Simple, Companion, LSimple$Companion;) + INVOKEVIRTUAL (Simple$Companion, serializer, ()Lkotlinx/serialization/KSerializer;) + INVOKEVIRTUAL (Box$Companion, serializer, (Lkotlinx/serialization/KSerializer;)Lkotlinx/serialization/KSerializer;) + LABEL (L6) + POP + LABEL (L7) + LINENUMBER (31) + ICONST_0 + ISTORE (0) + LABEL (L8) + LINENUMBER (49) + GETSTATIC (Box, Companion, LBox$Companion;) + GETSTATIC (Simple, Companion, LSimple$Companion;) + INVOKEVIRTUAL (Simple$Companion, serializer, ()Lkotlinx/serialization/KSerializer;) + INVOKEVIRTUAL (Box$Companion, serializer, (Lkotlinx/serialization/KSerializer;)Lkotlinx/serialization/KSerializer;) + LABEL (L9) + POP + LABEL (L10) + LINENUMBER (32) + ICONST_0 + ISTORE (0) + LABEL (L11) + LINENUMBER (50) + NEW (kotlinx/serialization/internal/ArrayListSerializer) + DUP + GETSTATIC (Simple, Companion, LSimple$Companion;) + INVOKEVIRTUAL (Simple$Companion, serializer, ()Lkotlinx/serialization/KSerializer;) + INVOKESPECIAL (kotlinx/serialization/internal/ArrayListSerializer, , (Lkotlinx/serialization/KSerializer;)V) + LABEL (L12) + POP + LABEL (L13) + LINENUMBER (34) + GETSTATIC (Box, Companion, LBox$Companion;) + NEW (kotlinx/serialization/internal/ArrayListSerializer) + DUP + GETSTATIC (Simple, Companion, LSimple$Companion;) + INVOKEVIRTUAL (Simple$Companion, serializer, ()Lkotlinx/serialization/KSerializer;) + INVOKESPECIAL (kotlinx/serialization/internal/ArrayListSerializer, , (Lkotlinx/serialization/KSerializer;)V) + INVOKEVIRTUAL (Box$Companion, serializer, (Lkotlinx/serialization/KSerializer;)Lkotlinx/serialization/KSerializer;) + POP + LABEL (L14) + LINENUMBER (36) + ICONST_0 + ISTORE (0) + LABEL (L15) + LINENUMBER (51) + NEW (kotlinx/serialization/internal/ArrayListSerializer) + DUP + GETSTATIC (Box, Companion, LBox$Companion;) + NEW (kotlinx/serialization/internal/ArrayListSerializer) + DUP + GETSTATIC (Simple, Companion, LSimple$Companion;) + INVOKEVIRTUAL (Simple$Companion, serializer, ()Lkotlinx/serialization/KSerializer;) + INVOKESPECIAL (kotlinx/serialization/internal/ArrayListSerializer, , (Lkotlinx/serialization/KSerializer;)V) + INVOKEVIRTUAL (Box$Companion, serializer, (Lkotlinx/serialization/KSerializer;)Lkotlinx/serialization/KSerializer;) + INVOKESPECIAL (kotlinx/serialization/internal/ArrayListSerializer, , (Lkotlinx/serialization/KSerializer;)V) + LABEL (L16) + POP + LABEL (L17) + LINENUMBER (38) + GETSTATIC (kotlinx/serialization/internal/IntSerializer, INSTANCE, Lkotlinx/serialization/internal/IntSerializer;) + POP + LABEL (L18) + LINENUMBER (40) + GETSTATIC (SerializableObject, INSTANCE, LSerializableObject;) + INVOKEVIRTUAL (SerializableObject, serializer, ()Lkotlinx/serialization/KSerializer;) + POP + LABEL (L19) + LINENUMBER (42) + ICONST_0 + ISTORE (0) + LABEL (L20) + LINENUMBER (52) + NEW (kotlinx/serialization/internal/ArrayListSerializer) + DUP + NEW (kotlinx/serialization/internal/ArrayListSerializer) + DUP + GETSTATIC (Box, Companion, LBox$Companion;) + GETSTATIC (kotlinx/serialization/internal/IntSerializer, INSTANCE, Lkotlinx/serialization/internal/IntSerializer;) + INVOKEVIRTUAL (Box$Companion, serializer, (Lkotlinx/serialization/KSerializer;)Lkotlinx/serialization/KSerializer;) + INVOKESPECIAL (kotlinx/serialization/internal/ArrayListSerializer, , (Lkotlinx/serialization/KSerializer;)V) + INVOKESPECIAL (kotlinx/serialization/internal/ArrayListSerializer, , (Lkotlinx/serialization/KSerializer;)V) + LABEL (L21) + POP + LABEL (L22) + LINENUMBER (44) + GETSTATIC (Simple, Companion, LSimple$Companion;) + INVOKEVIRTUAL (Simple$Companion, serializer, ()Lkotlinx/serialization/KSerializer;) + INVOKESTATIC (kotlinx/serialization/builtins/BuiltinSerializersKt, getNullable, (Lkotlinx/serialization/KSerializer;)Lkotlinx/serialization/KSerializer;) + POP + LABEL (L23) + LINENUMBER (45) + RETURN + } +} + +final class SerializableObject$1 : kotlin/jvm/internal/Lambda, kotlin/jvm/functions/Function0 { + public final static SerializableObject$1 INSTANCE + + static void () + + void () + + public final kotlinx.serialization.KSerializer invoke() + + public java.lang.Object invoke() +} + +public final class SerializableObject : java/lang/Object { + private final static kotlin.Lazy $cachedSerializer$delegate + + public final static SerializableObject INSTANCE + + static void () + + private void () + + private final kotlinx.serialization.KSerializer get$cachedSerializer() + + public final kotlinx.serialization.KSerializer serializer() +} + +public final class Simple$$serializer : java/lang/Object, kotlinx/serialization/internal/GeneratedSerializer { + public final static Simple$$serializer INSTANCE + + private final static kotlinx.serialization.descriptors.SerialDescriptor descriptor + + static void () + + private void () + + public final kotlinx.serialization.KSerializer[] childSerializers() + + public final Simple deserialize(kotlinx.serialization.encoding.Decoder decoder) + + public java.lang.Object deserialize(kotlinx.serialization.encoding.Decoder decoder) + + public final kotlinx.serialization.descriptors.SerialDescriptor getDescriptor() + + public final void serialize(kotlinx.serialization.encoding.Encoder encoder, Simple value) + + public void serialize(kotlinx.serialization.encoding.Encoder encoder, java.lang.Object value) + + public kotlinx.serialization.KSerializer[] typeParametersSerializers() +} + +public final class Simple$Companion : java/lang/Object { + private void () + + public void (kotlin.jvm.internal.DefaultConstructorMarker $constructor_marker) + + public final kotlinx.serialization.KSerializer serializer() +} + +public final class Simple : java/lang/Object { + public final static Simple$Companion Companion + + private final java.lang.String firstName + + private final java.lang.String lastName + + static void () + + public void (java.lang.String firstName, java.lang.String lastName) + + public void (int seen0, java.lang.String firstName, java.lang.String lastName, kotlinx.serialization.internal.SerializationConstructorMarker serializationConstructorMarker) + + public final java.lang.String getFirstName() + + public final java.lang.String getLastName() + + public final static void write$Self(Simple self, kotlinx.serialization.encoding.CompositeEncoder output, kotlinx.serialization.descriptors.SerialDescriptor serialDesc) +} diff --git a/plugins/kotlinx-serialization/testData/codegen/IntrinsicsAdvanced.asm.fir.txt b/plugins/kotlinx-serialization/testData/codegen/IntrinsicsAdvanced.asm.fir.txt new file mode 100644 index 00000000000..71ffd304868 --- /dev/null +++ b/plugins/kotlinx-serialization/testData/codegen/IntrinsicsAdvanced.asm.fir.txt @@ -0,0 +1,209 @@ +public final class IntrinsicsAdvancedKt : java/lang/Object { + private final static kotlinx.serialization.modules.SerializersModule module + + static void () + + public final static kotlinx.serialization.modules.SerializersModule getModule() + + public final static kotlinx.serialization.KSerializer getSer(kotlinx.serialization.modules.SerializersModule module) { + LABEL (L0) + ALOAD (0) + LDC (module) + INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V) + ICONST_0 + ISTORE (1) + LABEL (L1) + LINENUMBER (18) + ALOAD (0) + ASTORE (2) + BIPUSH (6) + LDC (T) + INVOKESTATIC (kotlin/jvm/internal/Intrinsics, reifiedOperationMarker, (ILjava/lang/String;)V) + ACONST_NULL + LDC (kotlinx.serialization.serializer.withModule) + INVOKESTATIC (kotlin/jvm/internal/MagicApiIntrinsics, voidMagicApiCall, (Ljava/lang/Object;)V) + ALOAD (2) + SWAP + INVOKESTATIC (kotlinx/serialization/SerializersKt, serializer, (Lkotlinx/serialization/modules/SerializersModule;Lkotlin/reflect/KType;)Lkotlinx/serialization/KSerializer;) + ARETURN + LABEL (L2) + } + + public final static void test() { + LABEL (L0) + LINENUMBER (22) + GETSTATIC (IntrinsicsAdvancedKt, module, Lkotlinx/serialization/modules/SerializersModule;) + POP + GETSTATIC (Simple, Companion, LSimple$Companion;) + INVOKEVIRTUAL (Simple$Companion, serializer, ()Lkotlinx/serialization/KSerializer;) + POP + LABEL (L1) + LINENUMBER (23) + GETSTATIC (IntrinsicsAdvancedKt, module, Lkotlinx/serialization/modules/SerializersModule;) + LDC (LNoSer;) + INVOKESTATIC (kotlin/jvm/internal/Reflection, getOrCreateKotlinClass, (Ljava/lang/Class;)Lkotlin/reflect/KClass;) + INVOKESTATIC (kotlinx/serialization/SerializersKt, noCompiledSerializer, (Lkotlinx/serialization/modules/SerializersModule;Lkotlin/reflect/KClass;)Lkotlinx/serialization/KSerializer;) + POP + LABEL (L2) + LINENUMBER (24) + GETSTATIC (IntrinsicsAdvancedKt, module, Lkotlinx/serialization/modules/SerializersModule;) + POP + NEW (kotlinx/serialization/internal/ArrayListSerializer) + DUP + GETSTATIC (Simple, Companion, LSimple$Companion;) + INVOKEVIRTUAL (Simple$Companion, serializer, ()Lkotlinx/serialization/KSerializer;) + INVOKESPECIAL (kotlinx/serialization/internal/ArrayListSerializer, , (Lkotlinx/serialization/KSerializer;)V) + POP + LABEL (L3) + LINENUMBER (25) + GETSTATIC (IntrinsicsAdvancedKt, module, Lkotlinx/serialization/modules/SerializersModule;) + ASTORE (0) + NEW (kotlinx/serialization/internal/ArrayListSerializer) + DUP + ALOAD (0) + LDC (LNoSer;) + INVOKESTATIC (kotlin/jvm/internal/Reflection, getOrCreateKotlinClass, (Ljava/lang/Class;)Lkotlin/reflect/KClass;) + INVOKESTATIC (kotlinx/serialization/SerializersKt, noCompiledSerializer, (Lkotlinx/serialization/modules/SerializersModule;Lkotlin/reflect/KClass;)Lkotlinx/serialization/KSerializer;) + INVOKESPECIAL (kotlinx/serialization/internal/ArrayListSerializer, , (Lkotlinx/serialization/KSerializer;)V) + POP + LABEL (L4) + LINENUMBER (27) + GETSTATIC (IntrinsicsAdvancedKt, module, Lkotlinx/serialization/modules/SerializersModule;) + ASTORE (0) + LABEL (L5) + ICONST_0 + ISTORE (1) + LABEL (L6) + LINENUMBER (34) + GETSTATIC (Simple, Companion, LSimple$Companion;) + INVOKEVIRTUAL (Simple$Companion, serializer, ()Lkotlinx/serialization/KSerializer;) + LABEL (L7) + POP + LABEL (L8) + LINENUMBER (28) + GETSTATIC (IntrinsicsAdvancedKt, module, Lkotlinx/serialization/modules/SerializersModule;) + ASTORE (0) + LABEL (L9) + ICONST_0 + ISTORE (1) + LABEL (L10) + LINENUMBER (35) + ALOAD (0) + LDC (LNoSer;) + INVOKESTATIC (kotlin/jvm/internal/Reflection, getOrCreateKotlinClass, (Ljava/lang/Class;)Lkotlin/reflect/KClass;) + INVOKESTATIC (kotlinx/serialization/SerializersKt, noCompiledSerializer, (Lkotlinx/serialization/modules/SerializersModule;Lkotlin/reflect/KClass;)Lkotlinx/serialization/KSerializer;) + LABEL (L11) + POP + LABEL (L12) + LINENUMBER (30) + GETSTATIC (IntrinsicsAdvancedKt, module, Lkotlinx/serialization/modules/SerializersModule;) + ASTORE (0) + LABEL (L13) + ICONST_0 + ISTORE (1) + LABEL (L14) + LINENUMBER (36) + ALOAD (0) + LDC (LNoSerGeneric;) + INVOKESTATIC (kotlin/jvm/internal/Reflection, getOrCreateKotlinClass, (Ljava/lang/Class;)Lkotlin/reflect/KClass;) + ICONST_1 + ANEWARRAY (kotlinx/serialization/KSerializer) + DUP + ICONST_0 + GETSTATIC (Simple, Companion, LSimple$Companion;) + INVOKEVIRTUAL (Simple$Companion, serializer, ()Lkotlinx/serialization/KSerializer;) + AASTORE + INVOKESTATIC (kotlinx/serialization/SerializersKt, noCompiledSerializer, (Lkotlinx/serialization/modules/SerializersModule;Lkotlin/reflect/KClass;[Lkotlinx/serialization/KSerializer;)Lkotlinx/serialization/KSerializer;) + LABEL (L15) + POP + LABEL (L16) + LINENUMBER (31) + GETSTATIC (IntrinsicsAdvancedKt, module, Lkotlinx/serialization/modules/SerializersModule;) + ASTORE (0) + LABEL (L17) + ICONST_0 + ISTORE (1) + LABEL (L18) + LINENUMBER (37) + ALOAD (0) + ASTORE (2) + ALOAD (2) + LDC (LNoSerGeneric;) + INVOKESTATIC (kotlin/jvm/internal/Reflection, getOrCreateKotlinClass, (Ljava/lang/Class;)Lkotlin/reflect/KClass;) + ICONST_1 + ANEWARRAY (kotlinx/serialization/KSerializer) + DUP + ICONST_0 + ALOAD (2) + LDC (LNoSer;) + INVOKESTATIC (kotlin/jvm/internal/Reflection, getOrCreateKotlinClass, (Ljava/lang/Class;)Lkotlin/reflect/KClass;) + INVOKESTATIC (kotlinx/serialization/SerializersKt, noCompiledSerializer, (Lkotlinx/serialization/modules/SerializersModule;Lkotlin/reflect/KClass;)Lkotlinx/serialization/KSerializer;) + AASTORE + INVOKESTATIC (kotlinx/serialization/SerializersKt, noCompiledSerializer, (Lkotlinx/serialization/modules/SerializersModule;Lkotlin/reflect/KClass;[Lkotlinx/serialization/KSerializer;)Lkotlinx/serialization/KSerializer;) + LABEL (L19) + POP + LABEL (L20) + LINENUMBER (32) + RETURN + } +} + +public final class NoSer : java/lang/Object { + public void () +} + +public final class NoSerGeneric : java/lang/Object { + public void () +} + +public final class Simple$$serializer : java/lang/Object, kotlinx/serialization/internal/GeneratedSerializer { + public final static Simple$$serializer INSTANCE + + private final static kotlinx.serialization.descriptors.SerialDescriptor descriptor + + static void () + + private void () + + public final kotlinx.serialization.KSerializer[] childSerializers() + + public final Simple deserialize(kotlinx.serialization.encoding.Decoder decoder) + + public java.lang.Object deserialize(kotlinx.serialization.encoding.Decoder decoder) + + public final kotlinx.serialization.descriptors.SerialDescriptor getDescriptor() + + public final void serialize(kotlinx.serialization.encoding.Encoder encoder, Simple value) + + public void serialize(kotlinx.serialization.encoding.Encoder encoder, java.lang.Object value) + + public kotlinx.serialization.KSerializer[] typeParametersSerializers() +} + +public final class Simple$Companion : java/lang/Object { + private void () + + public void (kotlin.jvm.internal.DefaultConstructorMarker $constructor_marker) + + public final kotlinx.serialization.KSerializer serializer() +} + +public final class Simple : java/lang/Object { + public final static Simple$Companion Companion + + private final java.lang.String firstName + + private final java.lang.String lastName + + static void () + + public void (java.lang.String firstName, java.lang.String lastName) + + public void (int seen0, java.lang.String firstName, java.lang.String lastName, kotlinx.serialization.internal.SerializationConstructorMarker serializationConstructorMarker) + + public final java.lang.String getFirstName() + + public final java.lang.String getLastName() + + public final static void write$Self(Simple self, kotlinx.serialization.encoding.CompositeEncoder output, kotlinx.serialization.descriptors.SerialDescriptor serialDesc) +} diff --git a/plugins/kotlinx-serialization/testData/codegen/Sealed.asm.fir.txt b/plugins/kotlinx-serialization/testData/codegen/Sealed.asm.fir.txt new file mode 100644 index 00000000000..b969758a324 --- /dev/null +++ b/plugins/kotlinx-serialization/testData/codegen/Sealed.asm.fir.txt @@ -0,0 +1,854 @@ +public final class Container$$serializer : java/lang/Object, kotlinx/serialization/internal/GeneratedSerializer { + public final static Container$$serializer INSTANCE + + private final static kotlinx.serialization.descriptors.SerialDescriptor descriptor + + static void () { + NEW (Container$$serializer) + DUP + INVOKESPECIAL (Container$$serializer, , ()V) + PUTSTATIC (Container$$serializer, INSTANCE, LContainer$$serializer;) + NEW (kotlinx/serialization/internal/PluginGeneratedSerialDescriptor) + DUP + LDC (Container) + GETSTATIC (Container$$serializer, INSTANCE, LContainer$$serializer;) + CHECKCAST (kotlinx/serialization/internal/GeneratedSerializer) + ICONST_1 + INVOKESPECIAL (kotlinx/serialization/internal/PluginGeneratedSerialDescriptor, , (Ljava/lang/String;Lkotlinx/serialization/internal/GeneratedSerializer;I)V) + ASTORE (0) + ALOAD (0) + LDC (r) + ICONST_0 + INVOKEVIRTUAL (kotlinx/serialization/internal/PluginGeneratedSerialDescriptor, addElement, (Ljava/lang/String;Z)V) + ALOAD (0) + CHECKCAST (kotlinx/serialization/descriptors/SerialDescriptor) + PUTSTATIC (Container$$serializer, descriptor, Lkotlinx/serialization/descriptors/SerialDescriptor;) + RETURN + } + + private void () { + LABEL (L0) + ALOAD (0) + INVOKESPECIAL (java/lang/Object, , ()V) + RETURN + LABEL (L1) + } + + public final kotlinx.serialization.KSerializer[] childSerializers() { + LABEL (L0) + INVOKESTATIC (Container, access$get$childSerializers$cp, ()[Lkotlinx/serialization/KSerializer;) + ASTORE (1) + ICONST_1 + ANEWARRAY (kotlinx/serialization/KSerializer) + ASTORE (2) + ALOAD (2) + ICONST_0 + ALOAD (1) + ICONST_0 + AALOAD + AASTORE + ALOAD (2) + ARETURN + LABEL (L1) + } + + public final Container deserialize(kotlinx.serialization.encoding.Decoder decoder) { + LABEL (L0) + ALOAD (1) + LDC (decoder) + INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V) + GETSTATIC (Container$$serializer, descriptor, Lkotlinx/serialization/descriptors/SerialDescriptor;) + ASTORE (2) + ICONST_1 + ISTORE (3) + ICONST_0 + ISTORE (5) + ACONST_NULL + ASTORE (6) + ALOAD (1) + ALOAD (2) + INVOKEINTERFACE (kotlinx/serialization/encoding/Decoder, beginStructure, (Lkotlinx/serialization/descriptors/SerialDescriptor;)Lkotlinx/serialization/encoding/CompositeDecoder;) + ASTORE (7) + INVOKESTATIC (Container, access$get$childSerializers$cp, ()[Lkotlinx/serialization/KSerializer;) + ASTORE (8) + ALOAD (7) + INVOKEINTERFACE (kotlinx/serialization/encoding/CompositeDecoder, decodeSequentially, ()Z) + IFEQ (L1) + ALOAD (7) + ALOAD (2) + ICONST_0 + ALOAD (8) + ICONST_0 + AALOAD + CHECKCAST (kotlinx/serialization/DeserializationStrategy) + ALOAD (6) + INVOKEINTERFACE (kotlinx/serialization/encoding/CompositeDecoder, decodeSerializableElement, (Lkotlinx/serialization/descriptors/SerialDescriptor;ILkotlinx/serialization/DeserializationStrategy;Ljava/lang/Object;)Ljava/lang/Object;) + ASTORE (6) + ILOAD (5) + ICONST_1 + IOR + ISTORE (5) + GOTO (L2) + LABEL (L1) + ILOAD (3) + IFEQ (L2) + ALOAD (7) + ALOAD (2) + INVOKEINTERFACE (kotlinx/serialization/encoding/CompositeDecoder, decodeElementIndex, (Lkotlinx/serialization/descriptors/SerialDescriptor;)I) + ISTORE (4) + ILOAD (4) + TABLESWITCH + -1: L3 + 0: L4 + default: L5 + LABEL (L3) + ICONST_0 + ISTORE (3) + GOTO (L1) + LABEL (L4) + ALOAD (7) + ALOAD (2) + ICONST_0 + ALOAD (8) + ICONST_0 + AALOAD + CHECKCAST (kotlinx/serialization/DeserializationStrategy) + ALOAD (6) + INVOKEINTERFACE (kotlinx/serialization/encoding/CompositeDecoder, decodeSerializableElement, (Lkotlinx/serialization/descriptors/SerialDescriptor;ILkotlinx/serialization/DeserializationStrategy;Ljava/lang/Object;)Ljava/lang/Object;) + ASTORE (6) + ILOAD (5) + ICONST_1 + IOR + ISTORE (5) + GOTO (L1) + LABEL (L5) + NEW (kotlinx/serialization/UnknownFieldException) + DUP + ILOAD (4) + INVOKESPECIAL (kotlinx/serialization/UnknownFieldException, , (I)V) + ATHROW + LABEL (L2) + ALOAD (7) + ALOAD (2) + INVOKEINTERFACE (kotlinx/serialization/encoding/CompositeDecoder, endStructure, (Lkotlinx/serialization/descriptors/SerialDescriptor;)V) + NEW (Container) + DUP + ILOAD (5) + ALOAD (6) + CHECKCAST (Result) + ACONST_NULL + INVOKESPECIAL (Container, , (ILResult;Lkotlinx/serialization/internal/SerializationConstructorMarker;)V) + ARETURN + LABEL (L6) + } + + public java.lang.Object deserialize(kotlinx.serialization.encoding.Decoder decoder) { + LABEL (L0) + ALOAD (0) + ALOAD (1) + INVOKEVIRTUAL (Container$$serializer, deserialize, (Lkotlinx/serialization/encoding/Decoder;)LContainer;) + ARETURN + LABEL (L1) + } + + public final kotlinx.serialization.descriptors.SerialDescriptor getDescriptor() + + public final void serialize(kotlinx.serialization.encoding.Encoder encoder, Container value) + + public void serialize(kotlinx.serialization.encoding.Encoder encoder, java.lang.Object value) + + public kotlinx.serialization.KSerializer[] typeParametersSerializers() +} + +public final class Container$Companion : java/lang/Object { + private void () { + LABEL (L0) + ALOAD (0) + INVOKESPECIAL (java/lang/Object, , ()V) + RETURN + LABEL (L1) + } + + public void (kotlin.jvm.internal.DefaultConstructorMarker $constructor_marker) { + LABEL (L0) + ALOAD (0) + INVOKESPECIAL (Container$Companion, , ()V) + RETURN + LABEL (L1) + } + + public final kotlinx.serialization.KSerializer serializer() { + LABEL (L0) + GETSTATIC (Container$$serializer, INSTANCE, LContainer$$serializer;) + CHECKCAST (kotlinx/serialization/KSerializer) + ARETURN + LABEL (L1) + } +} + +public final class Container : java/lang/Object { + private final static kotlinx.serialization.KSerializer[] $childSerializers + + public final static Container$Companion Companion + + private final Result r + + static void () { + NEW (Container$Companion) + DUP + ACONST_NULL + INVOKESPECIAL (Container$Companion, , (Lkotlin/jvm/internal/DefaultConstructorMarker;)V) + PUTSTATIC (Container, Companion, LContainer$Companion;) + ICONST_1 + ANEWARRAY (kotlinx/serialization/KSerializer) + ASTORE (0) + ALOAD (0) + ICONST_0 + GETSTATIC (Result, Companion, LResult$Companion;) + INVOKEVIRTUAL (Result$Companion, serializer, ()Lkotlinx/serialization/KSerializer;) + AASTORE + ALOAD (0) + PUTSTATIC (Container, $childSerializers, [Lkotlinx/serialization/KSerializer;) + RETURN + } + + public void (Result r) { + LABEL (L0) + ALOAD (1) + LDC (r) + INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V) + LABEL (L1) + LINENUMBER (19) + ALOAD (0) + INVOKESPECIAL (java/lang/Object, , ()V) + ALOAD (0) + ALOAD (1) + PUTFIELD (Container, r, LResult;) + RETURN + LABEL (L2) + } + + public void (int seen0, Result r, kotlinx.serialization.internal.SerializationConstructorMarker serializationConstructorMarker) { + LABEL (L0) + LINENUMBER (18) + ICONST_1 + ICONST_1 + ILOAD (1) + IAND + IF_ICMPEQ (L1) + ILOAD (1) + ICONST_1 + GETSTATIC (Container$$serializer, INSTANCE, LContainer$$serializer;) + INVOKEVIRTUAL (Container$$serializer, getDescriptor, ()Lkotlinx/serialization/descriptors/SerialDescriptor;) + INVOKESTATIC (kotlinx/serialization/internal/PluginExceptionsKt, throwMissingFieldException, (IILkotlinx/serialization/descriptors/SerialDescriptor;)V) + LABEL (L1) + ALOAD (0) + INVOKESPECIAL (java/lang/Object, , ()V) + ALOAD (0) + ALOAD (2) + PUTFIELD (Container, r, LResult;) + RETURN + LABEL (L2) + } + + public final static kotlinx.serialization.KSerializer[] access$get$childSerializers$cp() + + public final Result getR() + + public final static void write$Self(Container self, kotlinx.serialization.encoding.CompositeEncoder output, kotlinx.serialization.descriptors.SerialDescriptor serialDesc) { + LABEL (L0) + LINENUMBER (18) + GETSTATIC (Container, $childSerializers, [Lkotlinx/serialization/KSerializer;) + ASTORE (3) + ALOAD (1) + ALOAD (2) + ICONST_0 + ALOAD (3) + ICONST_0 + AALOAD + CHECKCAST (kotlinx/serialization/SerializationStrategy) + ALOAD (0) + GETFIELD (Container, r, LResult;) + INVOKEINTERFACE (kotlinx/serialization/encoding/CompositeEncoder, encodeSerializableElement, (Lkotlinx/serialization/descriptors/SerialDescriptor;ILkotlinx/serialization/SerializationStrategy;Ljava/lang/Object;)V) + RETURN + LABEL (L1) + } +} + +final class Result$Companion$1 : kotlin/jvm/internal/Lambda, kotlin/jvm/functions/Function0 { + public final static Result$Companion$1 INSTANCE + + static void () { + NEW (Result$Companion$1) + DUP + INVOKESPECIAL (Result$Companion$1, , ()V) + PUTSTATIC (Result$Companion$1, INSTANCE, LResult$Companion$1;) + RETURN + } + + void () { + LABEL (L0) + ALOAD (0) + ICONST_0 + INVOKESPECIAL (kotlin/jvm/internal/Lambda, , (I)V) + RETURN + LABEL (L1) + } + + public final kotlinx.serialization.KSerializer invoke() { + LABEL (L0) + NEW (kotlinx/serialization/SealedClassSerializer) + DUP + LDC (Result) + LDC (LResult;) + INVOKESTATIC (kotlin/jvm/internal/Reflection, getOrCreateKotlinClass, (Ljava/lang/Class;)Lkotlin/reflect/KClass;) + ICONST_2 + ANEWARRAY (kotlin/reflect/KClass) + ASTORE (1) + ALOAD (1) + ICONST_0 + LDC (LResult$Err;) + INVOKESTATIC (kotlin/jvm/internal/Reflection, getOrCreateKotlinClass, (Ljava/lang/Class;)Lkotlin/reflect/KClass;) + AASTORE + ALOAD (1) + ICONST_1 + LDC (LResult$OK;) + INVOKESTATIC (kotlin/jvm/internal/Reflection, getOrCreateKotlinClass, (Ljava/lang/Class;)Lkotlin/reflect/KClass;) + AASTORE + ALOAD (1) + ICONST_2 + ANEWARRAY (kotlinx/serialization/KSerializer) + ASTORE (1) + ALOAD (1) + ICONST_0 + NEW (kotlinx/serialization/internal/ObjectSerializer) + DUP + LDC (Result.Err) + GETSTATIC (Result$Err, INSTANCE, LResult$Err;) + ICONST_0 + ANEWARRAY (java/lang/annotation/Annotation) + INVOKESPECIAL (kotlinx/serialization/internal/ObjectSerializer, , (Ljava/lang/String;Ljava/lang/Object;[Ljava/lang/annotation/Annotation;)V) + AASTORE + ALOAD (1) + ICONST_1 + GETSTATIC (Result$OK$$serializer, INSTANCE, LResult$OK$$serializer;) + AASTORE + ALOAD (1) + ICONST_0 + ANEWARRAY (java/lang/annotation/Annotation) + INVOKESPECIAL (kotlinx/serialization/SealedClassSerializer, , (Ljava/lang/String;Lkotlin/reflect/KClass;[Lkotlin/reflect/KClass;[Lkotlinx/serialization/KSerializer;[Ljava/lang/annotation/Annotation;)V) + CHECKCAST (kotlinx/serialization/KSerializer) + ARETURN + LABEL (L1) + } + + public java.lang.Object invoke() { + LABEL (L0) + ALOAD (0) + INVOKEVIRTUAL (Result$Companion$1, invoke, ()Lkotlinx/serialization/KSerializer;) + ARETURN + LABEL (L1) + } +} + +public final class Result$Companion : java/lang/Object { + private void () { + LABEL (L0) + ALOAD (0) + INVOKESPECIAL (java/lang/Object, , ()V) + RETURN + LABEL (L1) + } + + public void (kotlin.jvm.internal.DefaultConstructorMarker $constructor_marker) { + LABEL (L0) + ALOAD (0) + INVOKESPECIAL (Result$Companion, , ()V) + RETURN + LABEL (L1) + } + + private final kotlinx.serialization.KSerializer get$cachedSerializer() + + public final kotlinx.serialization.KSerializer serializer() { + LABEL (L0) + ALOAD (0) + INVOKESPECIAL (Result$Companion, get$cachedSerializer, ()Lkotlinx/serialization/KSerializer;) + ARETURN + LABEL (L1) + } +} + +final class Result$Err$1 : kotlin/jvm/internal/Lambda, kotlin/jvm/functions/Function0 { + public final static Result$Err$1 INSTANCE + + static void () { + NEW (Result$Err$1) + DUP + INVOKESPECIAL (Result$Err$1, , ()V) + PUTSTATIC (Result$Err$1, INSTANCE, LResult$Err$1;) + RETURN + } + + void () { + LABEL (L0) + ALOAD (0) + ICONST_0 + INVOKESPECIAL (kotlin/jvm/internal/Lambda, , (I)V) + RETURN + LABEL (L1) + } + + public final kotlinx.serialization.KSerializer invoke() { + LABEL (L0) + LINENUMBER (15) + NEW (kotlinx/serialization/internal/ObjectSerializer) + DUP + LDC (Result.Err) + GETSTATIC (Result$Err, INSTANCE, LResult$Err;) + ICONST_0 + ANEWARRAY (java/lang/annotation/Annotation) + INVOKESPECIAL (kotlinx/serialization/internal/ObjectSerializer, , (Ljava/lang/String;Ljava/lang/Object;[Ljava/lang/annotation/Annotation;)V) + CHECKCAST (kotlinx/serialization/KSerializer) + ARETURN + LABEL (L1) + } + + public java.lang.Object invoke() { + LABEL (L0) + LINENUMBER (15) + ALOAD (0) + INVOKEVIRTUAL (Result$Err$1, invoke, ()Lkotlinx/serialization/KSerializer;) + ARETURN + LABEL (L1) + } +} + +public final class Result$Err : Result { + private final static kotlin.Lazy $cachedSerializer$delegate + + public final static Result$Err INSTANCE + + static void () { + NEW (Result$Err) + DUP + INVOKESPECIAL (Result$Err, , ()V) + PUTSTATIC (Result$Err, INSTANCE, LResult$Err;) + LABEL (L0) + LINENUMBER (15) + GETSTATIC (kotlin/LazyThreadSafetyMode, PUBLICATION, Lkotlin/LazyThreadSafetyMode;) + GETSTATIC (Result$Err$1, INSTANCE, LResult$Err$1;) + CHECKCAST (kotlin/jvm/functions/Function0) + INVOKESTATIC (kotlin/LazyKt, lazy, (Lkotlin/LazyThreadSafetyMode;Lkotlin/jvm/functions/Function0;)Lkotlin/Lazy;) + PUTSTATIC (Result$Err, $cachedSerializer$delegate, Lkotlin/Lazy;) + RETURN + } + + private void () { + LABEL (L0) + LINENUMBER (15) + ALOAD (0) + ACONST_NULL + INVOKESPECIAL (Result, , (Lkotlin/jvm/internal/DefaultConstructorMarker;)V) + RETURN + LABEL (L1) + } + + private final kotlinx.serialization.KSerializer get$cachedSerializer() + + public final kotlinx.serialization.KSerializer serializer() { + LABEL (L0) + LINENUMBER (15) + ALOAD (0) + INVOKESPECIAL (Result$Err, get$cachedSerializer, ()Lkotlinx/serialization/KSerializer;) + ARETURN + LABEL (L1) + } +} + +public final class Result$OK$$serializer : java/lang/Object, kotlinx/serialization/internal/GeneratedSerializer { + public final static Result$OK$$serializer INSTANCE + + private final static kotlinx.serialization.descriptors.SerialDescriptor descriptor + + static void () { + NEW (Result$OK$$serializer) + DUP + INVOKESPECIAL (Result$OK$$serializer, , ()V) + PUTSTATIC (Result$OK$$serializer, INSTANCE, LResult$OK$$serializer;) + NEW (kotlinx/serialization/internal/PluginGeneratedSerialDescriptor) + DUP + LDC (Result.OK) + GETSTATIC (Result$OK$$serializer, INSTANCE, LResult$OK$$serializer;) + CHECKCAST (kotlinx/serialization/internal/GeneratedSerializer) + ICONST_1 + INVOKESPECIAL (kotlinx/serialization/internal/PluginGeneratedSerialDescriptor, , (Ljava/lang/String;Lkotlinx/serialization/internal/GeneratedSerializer;I)V) + ASTORE (0) + ALOAD (0) + LDC (s) + ICONST_0 + INVOKEVIRTUAL (kotlinx/serialization/internal/PluginGeneratedSerialDescriptor, addElement, (Ljava/lang/String;Z)V) + ALOAD (0) + CHECKCAST (kotlinx/serialization/descriptors/SerialDescriptor) + PUTSTATIC (Result$OK$$serializer, descriptor, Lkotlinx/serialization/descriptors/SerialDescriptor;) + RETURN + } + + private void () { + LABEL (L0) + ALOAD (0) + INVOKESPECIAL (java/lang/Object, , ()V) + RETURN + LABEL (L1) + } + + public final kotlinx.serialization.KSerializer[] childSerializers() { + LABEL (L0) + ICONST_1 + ANEWARRAY (kotlinx/serialization/KSerializer) + ASTORE (1) + ALOAD (1) + ICONST_0 + GETSTATIC (kotlinx/serialization/internal/StringSerializer, INSTANCE, Lkotlinx/serialization/internal/StringSerializer;) + AASTORE + ALOAD (1) + ARETURN + LABEL (L1) + } + + public final Result$OK deserialize(kotlinx.serialization.encoding.Decoder decoder) { + LABEL (L0) + ALOAD (1) + LDC (decoder) + INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V) + GETSTATIC (Result$OK$$serializer, descriptor, Lkotlinx/serialization/descriptors/SerialDescriptor;) + ASTORE (2) + ICONST_1 + ISTORE (3) + ICONST_0 + ISTORE (5) + ACONST_NULL + ASTORE (6) + ALOAD (1) + ALOAD (2) + INVOKEINTERFACE (kotlinx/serialization/encoding/Decoder, beginStructure, (Lkotlinx/serialization/descriptors/SerialDescriptor;)Lkotlinx/serialization/encoding/CompositeDecoder;) + ASTORE (7) + ALOAD (7) + INVOKEINTERFACE (kotlinx/serialization/encoding/CompositeDecoder, decodeSequentially, ()Z) + IFEQ (L1) + ALOAD (7) + ALOAD (2) + ICONST_0 + INVOKEINTERFACE (kotlinx/serialization/encoding/CompositeDecoder, decodeStringElement, (Lkotlinx/serialization/descriptors/SerialDescriptor;I)Ljava/lang/String;) + ASTORE (6) + ILOAD (5) + ICONST_1 + IOR + ISTORE (5) + GOTO (L2) + LABEL (L1) + ILOAD (3) + IFEQ (L2) + ALOAD (7) + ALOAD (2) + INVOKEINTERFACE (kotlinx/serialization/encoding/CompositeDecoder, decodeElementIndex, (Lkotlinx/serialization/descriptors/SerialDescriptor;)I) + ISTORE (4) + ILOAD (4) + TABLESWITCH + -1: L3 + 0: L4 + default: L5 + LABEL (L3) + ICONST_0 + ISTORE (3) + GOTO (L1) + LABEL (L4) + ALOAD (7) + ALOAD (2) + ICONST_0 + INVOKEINTERFACE (kotlinx/serialization/encoding/CompositeDecoder, decodeStringElement, (Lkotlinx/serialization/descriptors/SerialDescriptor;I)Ljava/lang/String;) + ASTORE (6) + ILOAD (5) + ICONST_1 + IOR + ISTORE (5) + GOTO (L1) + LABEL (L5) + NEW (kotlinx/serialization/UnknownFieldException) + DUP + ILOAD (4) + INVOKESPECIAL (kotlinx/serialization/UnknownFieldException, , (I)V) + ATHROW + LABEL (L2) + ALOAD (7) + ALOAD (2) + INVOKEINTERFACE (kotlinx/serialization/encoding/CompositeDecoder, endStructure, (Lkotlinx/serialization/descriptors/SerialDescriptor;)V) + NEW (Result$OK) + DUP + ILOAD (5) + ALOAD (6) + ACONST_NULL + INVOKESPECIAL (Result$OK, , (ILjava/lang/String;Lkotlinx/serialization/internal/SerializationConstructorMarker;)V) + ARETURN + LABEL (L6) + } + + public java.lang.Object deserialize(kotlinx.serialization.encoding.Decoder decoder) { + LABEL (L0) + ALOAD (0) + ALOAD (1) + INVOKEVIRTUAL (Result$OK$$serializer, deserialize, (Lkotlinx/serialization/encoding/Decoder;)LResult$OK;) + ARETURN + LABEL (L1) + } + + public final kotlinx.serialization.descriptors.SerialDescriptor getDescriptor() + + public final void serialize(kotlinx.serialization.encoding.Encoder encoder, Result$OK value) + + public void serialize(kotlinx.serialization.encoding.Encoder encoder, java.lang.Object value) + + public kotlinx.serialization.KSerializer[] typeParametersSerializers() +} + +public final class Result$OK$Companion : java/lang/Object { + private void () { + LABEL (L0) + ALOAD (0) + INVOKESPECIAL (java/lang/Object, , ()V) + RETURN + LABEL (L1) + } + + public void (kotlin.jvm.internal.DefaultConstructorMarker $constructor_marker) { + LABEL (L0) + ALOAD (0) + INVOKESPECIAL (Result$OK$Companion, , ()V) + RETURN + LABEL (L1) + } + + public final kotlinx.serialization.KSerializer serializer() { + LABEL (L0) + GETSTATIC (Result$OK$$serializer, INSTANCE, LResult$OK$$serializer;) + CHECKCAST (kotlinx/serialization/KSerializer) + ARETURN + LABEL (L1) + } +} + +public final class Result$OK : Result { + public final static Result$OK$Companion Companion + + private final java.lang.String s + + static void () { + NEW (Result$OK$Companion) + DUP + ACONST_NULL + INVOKESPECIAL (Result$OK$Companion, , (Lkotlin/jvm/internal/DefaultConstructorMarker;)V) + PUTSTATIC (Result$OK, Companion, LResult$OK$Companion;) + RETURN + } + + public void (java.lang.String s) { + LABEL (L0) + ALOAD (1) + LDC (s) + INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V) + LABEL (L1) + LINENUMBER (14) + ALOAD (0) + ACONST_NULL + INVOKESPECIAL (Result, , (Lkotlin/jvm/internal/DefaultConstructorMarker;)V) + ALOAD (0) + ALOAD (1) + PUTFIELD (Result$OK, s, Ljava/lang/String;) + RETURN + LABEL (L2) + } + + public void (int seen0, java.lang.String s, kotlinx.serialization.internal.SerializationConstructorMarker serializationConstructorMarker) { + LABEL (L0) + LINENUMBER (14) + ICONST_1 + ICONST_1 + ILOAD (1) + IAND + IF_ICMPEQ (L1) + ILOAD (1) + ICONST_1 + GETSTATIC (Result$OK$$serializer, INSTANCE, LResult$OK$$serializer;) + INVOKEVIRTUAL (Result$OK$$serializer, getDescriptor, ()Lkotlinx/serialization/descriptors/SerialDescriptor;) + INVOKESTATIC (kotlinx/serialization/internal/PluginExceptionsKt, throwMissingFieldException, (IILkotlinx/serialization/descriptors/SerialDescriptor;)V) + LABEL (L1) + ALOAD (0) + ILOAD (1) + ALOAD (3) + INVOKESPECIAL (Result, , (ILkotlinx/serialization/internal/SerializationConstructorMarker;)V) + ALOAD (0) + ALOAD (2) + PUTFIELD (Result$OK, s, Ljava/lang/String;) + RETURN + LABEL (L2) + } + + 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) { + LABEL (L0) + LINENUMBER (14) + ALOAD (0) + CHECKCAST (Result) + ALOAD (1) + ALOAD (2) + INVOKESTATIC (Result, write$Self, (LResult;Lkotlinx/serialization/encoding/CompositeEncoder;Lkotlinx/serialization/descriptors/SerialDescriptor;)V) + ALOAD (1) + ALOAD (2) + ICONST_0 + ALOAD (0) + GETFIELD (Result$OK, s, Ljava/lang/String;) + INVOKEINTERFACE (kotlinx/serialization/encoding/CompositeEncoder, encodeStringElement, (Lkotlinx/serialization/descriptors/SerialDescriptor;ILjava/lang/String;)V) + RETURN + LABEL (L1) + } +} + +public abstract class Result : java/lang/Object, X { + private final static kotlin.Lazy $cachedSerializer$delegate + + public final static Result$Companion Companion + + static void () { + NEW (Result$Companion) + DUP + ACONST_NULL + INVOKESPECIAL (Result$Companion, , (Lkotlin/jvm/internal/DefaultConstructorMarker;)V) + PUTSTATIC (Result, Companion, LResult$Companion;) + GETSTATIC (kotlin/LazyThreadSafetyMode, PUBLICATION, Lkotlin/LazyThreadSafetyMode;) + GETSTATIC (Result$Companion$1, INSTANCE, LResult$Companion$1;) + CHECKCAST (kotlin/jvm/functions/Function0) + INVOKESTATIC (kotlin/LazyKt, lazy, (Lkotlin/LazyThreadSafetyMode;Lkotlin/jvm/functions/Function0;)Lkotlin/Lazy;) + PUTSTATIC (Result, $cachedSerializer$delegate, Lkotlin/Lazy;) + RETURN + } + + private void () { + LABEL (L0) + LINENUMBER (12) + ALOAD (0) + INVOKESPECIAL (java/lang/Object, , ()V) + RETURN + LABEL (L1) + } + + public void (int seen0, kotlinx.serialization.internal.SerializationConstructorMarker serializationConstructorMarker) { + LABEL (L0) + LINENUMBER (12) + ALOAD (0) + INVOKESPECIAL (java/lang/Object, , ()V) + RETURN + LABEL (L1) + } + + public void (kotlin.jvm.internal.DefaultConstructorMarker $constructor_marker) { + LABEL (L0) + ALOAD (0) + INVOKESPECIAL (Result, , ()V) + RETURN + LABEL (L1) + } + + public final static kotlin.Lazy access$get$cachedSerializer$delegate$cp() + + public void def() + + public final static void write$Self(Result self, kotlinx.serialization.encoding.CompositeEncoder output, kotlinx.serialization.descriptors.SerialDescriptor serialDesc) { + LABEL (L0) + RETURN + LABEL (L1) + } +} + +public final class X$Companion : java/lang/Object { + final static X$Companion $$INSTANCE + + static void () { + NEW (X$Companion) + DUP + INVOKESPECIAL (X$Companion, , ()V) + PUTSTATIC (X$Companion, $$INSTANCE, LX$Companion;) + RETURN + } + + private void () { + LABEL (L0) + ALOAD (0) + INVOKESPECIAL (java/lang/Object, , ()V) + RETURN + LABEL (L1) + } + + public final kotlinx.serialization.KSerializer serializer() { + LABEL (L0) + NEW (kotlinx/serialization/SealedClassSerializer) + DUP + LDC (X) + LDC (LX;) + INVOKESTATIC (kotlin/jvm/internal/Reflection, getOrCreateKotlinClass, (Ljava/lang/Class;)Lkotlin/reflect/KClass;) + ICONST_2 + ANEWARRAY (kotlin/reflect/KClass) + ASTORE (1) + ALOAD (1) + ICONST_0 + LDC (LResult$Err;) + INVOKESTATIC (kotlin/jvm/internal/Reflection, getOrCreateKotlinClass, (Ljava/lang/Class;)Lkotlin/reflect/KClass;) + AASTORE + ALOAD (1) + ICONST_1 + LDC (LResult$OK;) + INVOKESTATIC (kotlin/jvm/internal/Reflection, getOrCreateKotlinClass, (Ljava/lang/Class;)Lkotlin/reflect/KClass;) + AASTORE + ALOAD (1) + ICONST_2 + ANEWARRAY (kotlinx/serialization/KSerializer) + ASTORE (1) + ALOAD (1) + ICONST_0 + NEW (kotlinx/serialization/internal/ObjectSerializer) + DUP + LDC (Result.Err) + GETSTATIC (Result$Err, INSTANCE, LResult$Err;) + ICONST_0 + ANEWARRAY (java/lang/annotation/Annotation) + INVOKESPECIAL (kotlinx/serialization/internal/ObjectSerializer, , (Ljava/lang/String;Ljava/lang/Object;[Ljava/lang/annotation/Annotation;)V) + AASTORE + ALOAD (1) + ICONST_1 + GETSTATIC (Result$OK$$serializer, INSTANCE, LResult$OK$$serializer;) + AASTORE + ALOAD (1) + ICONST_0 + ANEWARRAY (java/lang/annotation/Annotation) + INVOKESPECIAL (kotlinx/serialization/SealedClassSerializer, , (Ljava/lang/String;Lkotlin/reflect/KClass;[Lkotlin/reflect/KClass;[Lkotlinx/serialization/KSerializer;[Ljava/lang/annotation/Annotation;)V) + CHECKCAST (kotlinx/serialization/KSerializer) + ARETURN + LABEL (L1) + } +} + +public final class X$DefaultImpls : java/lang/Object { + public static void def(X $this) +} + +public abstract interface X : java/lang/Object { + public final static X$Companion Companion + + static void () { + GETSTATIC (X$Companion, $$INSTANCE, LX$Companion;) + PUTSTATIC (X, Companion, LX$Companion;) + RETURN + } + + public abstract void def() +} diff --git a/plugins/kotlinx-serialization/tests-gen/org/jetbrains/kotlinx/serialization/runners/SerializationAsmLikeInstructionsListingTestGenerated.java b/plugins/kotlinx-serialization/tests-gen/org/jetbrains/kotlinx/serialization/runners/SerializationAsmLikeInstructionsListingTestGenerated.java index 112f87d59e1..4ceac029024 100644 --- a/plugins/kotlinx-serialization/tests-gen/org/jetbrains/kotlinx/serialization/runners/SerializationAsmLikeInstructionsListingTestGenerated.java +++ b/plugins/kotlinx-serialization/tests-gen/org/jetbrains/kotlinx/serialization/runners/SerializationAsmLikeInstructionsListingTestGenerated.java @@ -31,12 +31,6 @@ public class SerializationAsmLikeInstructionsListingTestGenerated extends Abstra runTest("plugins/kotlinx-serialization/testData/codegen/Basic.kt"); } - @Test - @TestMetadata("Delegated.kt") - public void testDelegated() throws Exception { - runTest("plugins/kotlinx-serialization/testData/codegen/Delegated.kt"); - } - @Test @TestMetadata("Intrinsics.kt") public void testIntrinsics() throws Exception { diff --git a/plugins/kotlinx-serialization/tests-gen/org/jetbrains/kotlinx/serialization/runners/SerializationFir2IrAsmLikeInstructionsListingTestGenerated.java b/plugins/kotlinx-serialization/tests-gen/org/jetbrains/kotlinx/serialization/runners/SerializationFir2IrAsmLikeInstructionsListingTestGenerated.java new file mode 100644 index 00000000000..0fe03620e9f --- /dev/null +++ b/plugins/kotlinx-serialization/tests-gen/org/jetbrains/kotlinx/serialization/runners/SerializationFir2IrAsmLikeInstructionsListingTestGenerated.java @@ -0,0 +1,51 @@ +/* + * Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlinx.serialization.runners; + +import com.intellij.testFramework.TestDataPath; +import org.jetbrains.kotlin.test.util.KtTestUtil; +import org.jetbrains.kotlin.test.TargetBackend; +import org.jetbrains.kotlin.test.TestMetadata; +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; + +import java.io.File; +import java.util.regex.Pattern; + +/** This class is generated by {@link org.jetbrains.kotlinx.serialization.TestGeneratorKt}. DO NOT MODIFY MANUALLY */ +@SuppressWarnings("all") +@TestMetadata("plugins/kotlinx-serialization/testData/codegen") +@TestDataPath("$PROJECT_ROOT") +public class SerializationFir2IrAsmLikeInstructionsListingTestGenerated extends AbstractSerializationFir2IrAsmLikeInstructionsListingTest { + @Test + public void testAllFilesPresentInCodegen() throws Exception { + KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("plugins/kotlinx-serialization/testData/codegen"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true); + } + + @Test + @TestMetadata("Basic.kt") + public void testBasic() throws Exception { + runTest("plugins/kotlinx-serialization/testData/codegen/Basic.kt"); + } + + @Test + @TestMetadata("Intrinsics.kt") + public void testIntrinsics() throws Exception { + runTest("plugins/kotlinx-serialization/testData/codegen/Intrinsics.kt"); + } + + @Test + @TestMetadata("IntrinsicsAdvanced.kt") + public void testIntrinsicsAdvanced() throws Exception { + runTest("plugins/kotlinx-serialization/testData/codegen/IntrinsicsAdvanced.kt"); + } + + @Test + @TestMetadata("Sealed.kt") + public void testSealed() throws Exception { + runTest("plugins/kotlinx-serialization/testData/codegen/Sealed.kt"); + } +} diff --git a/plugins/kotlinx-serialization/tests-gen/org/jetbrains/kotlinx/serialization/runners/SerializationIrAsmLikeInstructionsListingTestGenerated.java b/plugins/kotlinx-serialization/tests-gen/org/jetbrains/kotlinx/serialization/runners/SerializationIrAsmLikeInstructionsListingTestGenerated.java index 761be471207..345fcbefa2d 100644 --- a/plugins/kotlinx-serialization/tests-gen/org/jetbrains/kotlinx/serialization/runners/SerializationIrAsmLikeInstructionsListingTestGenerated.java +++ b/plugins/kotlinx-serialization/tests-gen/org/jetbrains/kotlinx/serialization/runners/SerializationIrAsmLikeInstructionsListingTestGenerated.java @@ -31,12 +31,6 @@ public class SerializationIrAsmLikeInstructionsListingTestGenerated extends Abst runTest("plugins/kotlinx-serialization/testData/codegen/Basic.kt"); } - @Test - @TestMetadata("Delegated.kt") - public void testDelegated() throws Exception { - runTest("plugins/kotlinx-serialization/testData/codegen/Delegated.kt"); - } - @Test @TestMetadata("Intrinsics.kt") public void testIntrinsics() throws Exception { diff --git a/plugins/kotlinx-serialization/tests/org/jetbrains/kotlinx/serialization/TestGenerator.kt b/plugins/kotlinx-serialization/tests/org/jetbrains/kotlinx/serialization/TestGenerator.kt index 746e97ab4cd..bf8086815ec 100644 --- a/plugins/kotlinx-serialization/tests/org/jetbrains/kotlinx/serialization/TestGenerator.kt +++ b/plugins/kotlinx-serialization/tests/org/jetbrains/kotlinx/serialization/TestGenerator.kt @@ -1,5 +1,5 @@ /* - * Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors. * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. */ @@ -38,6 +38,10 @@ fun main(args: Array) { model("codegen") } + testClass { + model("codegen") + } + // ------------------------------- box ------------------------------- testClass { diff --git a/plugins/kotlinx-serialization/tests/org/jetbrains/kotlinx/serialization/runners/AsmLikeInstructionsListingTests.kt b/plugins/kotlinx-serialization/tests/org/jetbrains/kotlinx/serialization/runners/AsmLikeInstructionsListingTests.kt index 693ad412c82..b3dd8b589cf 100644 --- a/plugins/kotlinx-serialization/tests/org/jetbrains/kotlinx/serialization/runners/AsmLikeInstructionsListingTests.kt +++ b/plugins/kotlinx-serialization/tests/org/jetbrains/kotlinx/serialization/runners/AsmLikeInstructionsListingTests.kt @@ -1,5 +1,5 @@ /* - * Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors. * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. */ @@ -28,6 +28,16 @@ open class AbstractSerializationIrAsmLikeInstructionsListingTest : AbstractIrAsm } } +open class AbstractSerializationFir2IrAsmLikeInstructionsListingTest : AbstractFirAsmLikeInstructionListingTest() { + override fun configure(builder: TestConfigurationBuilder) { + super.configure(builder) + builder.defaultDirectives { + +AsmLikeInstructionListingDirectives.FIR_DIFFERENCE + } + builder.configureForKotlinxSerialization() + } +} + private fun TestConfigurationBuilder.enableDifference() { defaultDirectives { +AsmLikeInstructionListingDirectives.IR_DIFFERENCE