Support plugin intrinsics for serializer() function in K2.

- Add IrPluginContext to JvmBackendContext, so plugin intrinsics can
reference external functions properly.

- Do not use module.findClassAcrossModuleDependencies as Descriptor API does not work for FIR.

- Add asm listing tests in serialization plugin for K2

- Remove Delegated.kt asm listing test as we have similar test in boxIr group.

#KT-56553 Fixed
This commit is contained in:
Leonid Startsev
2023-02-09 15:43:48 +01:00
committed by Space Team
parent 121c920099
commit 80ad6a4cd7
20 changed files with 2416 additions and 359 deletions
@@ -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 }
@@ -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()
@@ -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,
@@ -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)
@@ -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 }
}
}
}
@@ -5,6 +5,7 @@
import kotlinx.serialization.*
import kotlinx.serialization.json.*
import kotlinx.serialization.encoding.*
import kotlin.reflect.typeOf
@Serializable
data class Holder<T>(
@@ -14,7 +15,7 @@ data class Holder<T>(
)
fun box(): String {
val serializer = serializer<Holder<List<String>>>()
val serializer = serializer(typeOf<Holder<List<String>>>())
val instance = Holder(true, listOf("a", "b"))
val encoded = Json.encodeToString(serializer, instance)
if (encoded != """{"ok":true,"result":["a","b"]}""") return encoded
@@ -1,4 +1,3 @@
// IGNORE_BACKEND_FIR: JVM_IR
// TARGET_BACKEND: JVM_IR
// WITH_STDLIB
@@ -19,7 +19,7 @@ object SerializableObject {}
val module = SerializersModule {}
inline fun <reified T: Any> getSer(module: SerializersModule): KSerializer<T> {
inline fun <reified T : Any> getSer(module: SerializersModule): KSerializer<T> {
return module.serializer<T>()
}
@@ -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 <clinit>() {
NEW (ListOfUsers$$serializer)
DUP
INVOKESPECIAL (ListOfUsers$$serializer, <init>, ()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, <init>, (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 <init>() {
LABEL (L0)
ALOAD (0)
INVOKESPECIAL (java/lang/Object, <init>, ()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, <init>, (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, <init>, (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 <init>() {
LABEL (L0)
ALOAD (0)
INVOKESPECIAL (java/lang/Object, <init>, ()V)
RETURN
LABEL (L1)
}
public void <init>(kotlin.jvm.internal.DefaultConstructorMarker $constructor_marker) {
LABEL (L0)
ALOAD (0)
INVOKESPECIAL (ListOfUsers$Companion, <init>, ()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 <clinit>() {
NEW (ListOfUsers$Companion)
DUP
ACONST_NULL
INVOKESPECIAL (ListOfUsers$Companion, <init>, (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, <init>, (Lkotlinx/serialization/KSerializer;)V)
AASTORE
ALOAD (0)
PUTSTATIC (ListOfUsers, $childSerializers, [Lkotlinx/serialization/KSerializer;)
RETURN
}
public void <init>(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, <init>, ()V)
ALOAD (0)
ALOAD (1)
PUTFIELD (ListOfUsers, list, Ljava/util/List;)
RETURN
LABEL (L2)
}
public void <init>(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, <init>, ()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 <clinit>() {
NEW (OptionalUser$$serializer)
DUP
INVOKESPECIAL (OptionalUser$$serializer, <init>, ()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, <init>, (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 <init>() {
LABEL (L0)
ALOAD (0)
INVOKESPECIAL (java/lang/Object, <init>, ()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, <init>, (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, <init>, (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 <init>() {
LABEL (L0)
ALOAD (0)
INVOKESPECIAL (java/lang/Object, <init>, ()V)
RETURN
LABEL (L1)
}
public void <init>(kotlin.jvm.internal.DefaultConstructorMarker $constructor_marker) {
LABEL (L0)
ALOAD (0)
INVOKESPECIAL (OptionalUser$Companion, <init>, ()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 <clinit>() {
NEW (OptionalUser$Companion)
DUP
ACONST_NULL
INVOKESPECIAL (OptionalUser$Companion, <init>, (Lkotlin/jvm/internal/DefaultConstructorMarker;)V)
PUTSTATIC (OptionalUser, Companion, LOptionalUser$Companion;)
RETURN
}
public void <init>(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, <init>, ()V)
ALOAD (0)
ALOAD (1)
PUTFIELD (OptionalUser, user, LUser;)
RETURN
LABEL (L2)
}
public void <init>(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, <init>, (Ljava/lang/String;Ljava/lang/String;)V)
ASTORE (1)
LABEL (L1)
ALOAD (0)
ALOAD (1)
INVOKESPECIAL (OptionalUser, <init>, (LUser;)V)
RETURN
}
public void <init>(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, <init>, ()V)
ILOAD (1)
ICONST_1
IAND
IFNE (L2)
ALOAD (0)
LABEL (L3)
LINENUMBER (10)
NEW (User)
DUP
LDC ()
LDC ()
INVOKESPECIAL (User, <init>, (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 <init>() {
LABEL (L0)
ALOAD (0)
ACONST_NULL
ICONST_1
ACONST_NULL
INVOKESPECIAL (OptionalUser, <init>, (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, <init>, (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 <clinit>() {
NEW (User$$serializer)
DUP
INVOKESPECIAL (User$$serializer, <init>, ()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, <init>, (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 <init>() {
LABEL (L0)
ALOAD (0)
INVOKESPECIAL (java/lang/Object, <init>, ()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, <init>, (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, <init>, (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 <init>() {
LABEL (L0)
ALOAD (0)
INVOKESPECIAL (java/lang/Object, <init>, ()V)
RETURN
LABEL (L1)
}
public void <init>(kotlin.jvm.internal.DefaultConstructorMarker $constructor_marker) {
LABEL (L0)
ALOAD (0)
INVOKESPECIAL (User$Companion, <init>, ()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 <clinit>() {
NEW (User$Companion)
DUP
ACONST_NULL
INVOKESPECIAL (User$Companion, <init>, (Lkotlin/jvm/internal/DefaultConstructorMarker;)V)
PUTSTATIC (User, Companion, LUser$Companion;)
RETURN
}
public void <init>(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, <init>, ()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 <init>(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, <init>, ()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)
}
}
@@ -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 <clinit>() {
NEW (Test$$serializer)
DUP
INVOKESPECIAL (Test$$serializer, <init>, ()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, <init>, (Ljava/lang/String;Lkotlinx/serialization/internal/GeneratedSerializer;I)V)
PUTSTATIC (Test$$serializer, descriptor, Lkotlinx/serialization/internal/PluginGeneratedSerialDescriptor;)
LABEL (L1)
LINENUMBER (13)
RETURN
}
private void <init>() {
LABEL (L0)
LINENUMBER (12)
ALOAD (0)
INVOKESPECIAL (java/lang/Object, <init>, ()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 <init>() {
LABEL (L0)
LINENUMBER (12)
ALOAD (0)
INVOKESPECIAL (java/lang/Object, <init>, ()V)
RETURN
LABEL (L1)
}
public void <init>(kotlin.jvm.internal.DefaultConstructorMarker $constructor_marker) {
LABEL (L0)
ALOAD (0)
INVOKESPECIAL (Test$Companion, <init>, ()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 <clinit>() {
NEW (Test$Companion)
DUP
ACONST_NULL
INVOKESPECIAL (Test$Companion, <init>, (Lkotlin/jvm/internal/DefaultConstructorMarker;)V)
PUTSTATIC (Test, Companion, LTest$Companion;)
RETURN
}
public void <init>() {
LABEL (L0)
LINENUMBER (12)
ALOAD (0)
INVOKESPECIAL (java/lang/Object, <init>, ()V)
LABEL (L1)
LINENUMBER (13)
ALOAD (0)
INVOKESTATIC (DelegatedKt, generateImpl, ()LA;)
PUTFIELD (Test, $$delegate_0, LA;)
RETURN
LABEL (L2)
}
public void <init>(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, <init>, ()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)
}
@@ -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 <clinit>() {
NEW (DelegatedKt$generateImpl$1)
DUP
INVOKESPECIAL (DelegatedKt$generateImpl$1, <init>, ()V)
PUTSTATIC (DelegatedKt$generateImpl$1, INSTANCE, LDelegatedKt$generateImpl$1;)
RETURN
}
void <init>() {
ALOAD (0)
INVOKESPECIAL (java/lang/Object, <init>, ()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 <clinit>() {
LABEL (L0)
LINENUMBER (13)
NEW (Test$$serializer)
DUP
INVOKESPECIAL (Test$$serializer, <init>, ()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, <init>, (Ljava/lang/String;Lkotlinx/serialization/internal/GeneratedSerializer;I)V)
ASTORE (0)
ALOAD (0)
PUTSTATIC (Test$$serializer, $$serialDesc, Lkotlinx/serialization/descriptors/SerialDescriptor;)
RETURN
}
private void <init>() {
LABEL (L0)
LINENUMBER (13)
ALOAD (0)
INVOKESPECIAL (java/lang/Object, <init>, ()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 <init>() {
LABEL (L0)
LINENUMBER (13)
ALOAD (0)
INVOKESPECIAL (java/lang/Object, <init>, ()V)
RETURN
LABEL (L1)
}
public void <init>(kotlin.jvm.internal.DefaultConstructorMarker $constructor_marker) {
LABEL (L0)
LINENUMBER (13)
ALOAD (0)
INVOKESPECIAL (Test$Companion, <init>, ()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 <clinit>() {
NEW (Test$Companion)
DUP
ACONST_NULL
INVOKESPECIAL (Test$Companion, <init>, (Lkotlin/jvm/internal/DefaultConstructorMarker;)V)
PUTSTATIC (Test, Companion, LTest$Companion;)
RETURN
}
public void <init>() {
LABEL (L0)
LINENUMBER (13)
ALOAD (0)
INVOKESPECIAL (java/lang/Object, <init>, ()V)
ALOAD (0)
LABEL (L1)
LINENUMBER (13)
INVOKESTATIC (DelegatedKt, generateImpl, ()LA;)
PUTFIELD (Test, $$delegate_0, LA;)
RETURN
LABEL (L2)
}
public void <init>(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, <init>, ()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)
}
@@ -1,13 +0,0 @@
// CURIOUS_ABOUT: <init>, <clinit>
// WITH_STDLIB
import kotlinx.serialization.*
fun interface A {
fun getText(): String
}
fun generateImpl() = A { "Hello, world!" }
@Serializable
class Test : A by generateImpl()
@@ -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 <init>()
private void <init>(kotlinx.serialization.KSerializer typeSerial0)
public void <init>(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 <init>()
public void <init>(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 <clinit>()
public void <init>(java.lang.Object boxed)
public void <init>(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, <init>, (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, <init>, (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, <init>, (Lkotlinx/serialization/KSerializer;)V)
INVOKEVIRTUAL (Box$Companion, serializer, (Lkotlinx/serialization/KSerializer;)Lkotlinx/serialization/KSerializer;)
INVOKESPECIAL (kotlinx/serialization/internal/ArrayListSerializer, <init>, (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, <init>, (Lkotlinx/serialization/KSerializer;)V)
INVOKESPECIAL (kotlinx/serialization/internal/ArrayListSerializer, <init>, (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 <clinit>()
void <init>()
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 <clinit>()
private void <init>()
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 <clinit>()
private void <init>()
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 <init>()
public void <init>(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 <clinit>()
public void <init>(java.lang.String firstName, java.lang.String lastName)
public void <init>(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)
}
@@ -0,0 +1,209 @@
public final class IntrinsicsAdvancedKt : java/lang/Object {
private final static kotlinx.serialization.modules.SerializersModule module
static void <clinit>()
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, <init>, (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, <init>, (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 <init>()
}
public final class NoSerGeneric : java/lang/Object {
public void <init>()
}
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 <clinit>()
private void <init>()
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 <init>()
public void <init>(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 <clinit>()
public void <init>(java.lang.String firstName, java.lang.String lastName)
public void <init>(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)
}
@@ -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 <clinit>() {
NEW (Container$$serializer)
DUP
INVOKESPECIAL (Container$$serializer, <init>, ()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, <init>, (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 <init>() {
LABEL (L0)
ALOAD (0)
INVOKESPECIAL (java/lang/Object, <init>, ()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, <init>, (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, <init>, (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 <init>() {
LABEL (L0)
ALOAD (0)
INVOKESPECIAL (java/lang/Object, <init>, ()V)
RETURN
LABEL (L1)
}
public void <init>(kotlin.jvm.internal.DefaultConstructorMarker $constructor_marker) {
LABEL (L0)
ALOAD (0)
INVOKESPECIAL (Container$Companion, <init>, ()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 <clinit>() {
NEW (Container$Companion)
DUP
ACONST_NULL
INVOKESPECIAL (Container$Companion, <init>, (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 <init>(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, <init>, ()V)
ALOAD (0)
ALOAD (1)
PUTFIELD (Container, r, LResult;)
RETURN
LABEL (L2)
}
public void <init>(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, <init>, ()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 <clinit>() {
NEW (Result$Companion$1)
DUP
INVOKESPECIAL (Result$Companion$1, <init>, ()V)
PUTSTATIC (Result$Companion$1, INSTANCE, LResult$Companion$1;)
RETURN
}
void <init>() {
LABEL (L0)
ALOAD (0)
ICONST_0
INVOKESPECIAL (kotlin/jvm/internal/Lambda, <init>, (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, <init>, (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, <init>, (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 <init>() {
LABEL (L0)
ALOAD (0)
INVOKESPECIAL (java/lang/Object, <init>, ()V)
RETURN
LABEL (L1)
}
public void <init>(kotlin.jvm.internal.DefaultConstructorMarker $constructor_marker) {
LABEL (L0)
ALOAD (0)
INVOKESPECIAL (Result$Companion, <init>, ()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 <clinit>() {
NEW (Result$Err$1)
DUP
INVOKESPECIAL (Result$Err$1, <init>, ()V)
PUTSTATIC (Result$Err$1, INSTANCE, LResult$Err$1;)
RETURN
}
void <init>() {
LABEL (L0)
ALOAD (0)
ICONST_0
INVOKESPECIAL (kotlin/jvm/internal/Lambda, <init>, (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, <init>, (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 <clinit>() {
NEW (Result$Err)
DUP
INVOKESPECIAL (Result$Err, <init>, ()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 <init>() {
LABEL (L0)
LINENUMBER (15)
ALOAD (0)
ACONST_NULL
INVOKESPECIAL (Result, <init>, (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 <clinit>() {
NEW (Result$OK$$serializer)
DUP
INVOKESPECIAL (Result$OK$$serializer, <init>, ()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, <init>, (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 <init>() {
LABEL (L0)
ALOAD (0)
INVOKESPECIAL (java/lang/Object, <init>, ()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, <init>, (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, <init>, (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 <init>() {
LABEL (L0)
ALOAD (0)
INVOKESPECIAL (java/lang/Object, <init>, ()V)
RETURN
LABEL (L1)
}
public void <init>(kotlin.jvm.internal.DefaultConstructorMarker $constructor_marker) {
LABEL (L0)
ALOAD (0)
INVOKESPECIAL (Result$OK$Companion, <init>, ()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 <clinit>() {
NEW (Result$OK$Companion)
DUP
ACONST_NULL
INVOKESPECIAL (Result$OK$Companion, <init>, (Lkotlin/jvm/internal/DefaultConstructorMarker;)V)
PUTSTATIC (Result$OK, Companion, LResult$OK$Companion;)
RETURN
}
public void <init>(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, <init>, (Lkotlin/jvm/internal/DefaultConstructorMarker;)V)
ALOAD (0)
ALOAD (1)
PUTFIELD (Result$OK, s, Ljava/lang/String;)
RETURN
LABEL (L2)
}
public void <init>(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, <init>, (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 <clinit>() {
NEW (Result$Companion)
DUP
ACONST_NULL
INVOKESPECIAL (Result$Companion, <init>, (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 <init>() {
LABEL (L0)
LINENUMBER (12)
ALOAD (0)
INVOKESPECIAL (java/lang/Object, <init>, ()V)
RETURN
LABEL (L1)
}
public void <init>(int seen0, kotlinx.serialization.internal.SerializationConstructorMarker serializationConstructorMarker) {
LABEL (L0)
LINENUMBER (12)
ALOAD (0)
INVOKESPECIAL (java/lang/Object, <init>, ()V)
RETURN
LABEL (L1)
}
public void <init>(kotlin.jvm.internal.DefaultConstructorMarker $constructor_marker) {
LABEL (L0)
ALOAD (0)
INVOKESPECIAL (Result, <init>, ()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 <clinit>() {
NEW (X$Companion)
DUP
INVOKESPECIAL (X$Companion, <init>, ()V)
PUTSTATIC (X$Companion, $$INSTANCE, LX$Companion;)
RETURN
}
private void <init>() {
LABEL (L0)
ALOAD (0)
INVOKESPECIAL (java/lang/Object, <init>, ()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, <init>, (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, <init>, (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 <clinit>() {
GETSTATIC (X$Companion, $$INSTANCE, LX$Companion;)
PUTSTATIC (X, Companion, LX$Companion;)
RETURN
}
public abstract void def()
}
@@ -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 {
@@ -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");
}
}
@@ -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 {
@@ -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<String>) {
model("codegen")
}
testClass<AbstractSerializationFir2IrAsmLikeInstructionsListingTest> {
model("codegen")
}
// ------------------------------- box -------------------------------
testClass<AbstractSerializationIrBoxTest> {
@@ -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