[FIR] Introduce the PluginGenerated source kind

Make parcelize work consistently with
`FirOverrideChecker`.

Actually, there is a philosophical question about
what to do when a plugin generates a class
in a new package, and this class is red code
(for instance, doesn't implement an abstract
member from a supertype). There's no source
to report such an error, but we probably do
want to run checkers to avoid trying to
compile red code to binaries (because it may
crash in backend, or it may silently work).
This commit is contained in:
Nikolay Lunyak
2024-01-16 11:34:59 +02:00
committed by Space Team
parent 694029d67f
commit afd8895e51
14 changed files with 318 additions and 196 deletions
@@ -46,7 +46,7 @@ KtFunctionSymbol:
type: test/FirstTarget type: test/FirstTarget
symbolKind: LOCAL symbolKind: LOCAL
typeParameters: [] typeParameters: []
getContainingFileSymbol: null getContainingFileSymbol: KtFileSymbol(customSerlializable.kt)
getContainingJvmClassName: test.Serializer getContainingJvmClassName: test.Serializer
getContainingModule: KtSourceModule "Sources of main" getContainingModule: KtSourceModule "Sources of main"
deprecationStatus: null deprecationStatus: null
@@ -56,7 +56,7 @@ KtFunctionSymbol:
annotationsList: [] annotationsList: []
ownTypeArguments: [] ownTypeArguments: []
type: test/Serializer type: test/Serializer
getContainingFileSymbol: null getContainingFileSymbol: KtFileSymbol(customSerlializable.kt)
getContainingJvmClassName: test.Serializer getContainingJvmClassName: test.Serializer
getContainingModule: KtSourceModule "Sources of main" getContainingModule: KtSourceModule "Sources of main"
deprecationStatus: null deprecationStatus: null
@@ -109,7 +109,7 @@ KtFunctionSymbol:
type: test/SecondTarget type: test/SecondTarget
symbolKind: LOCAL symbolKind: LOCAL
typeParameters: [] typeParameters: []
getContainingFileSymbol: null getContainingFileSymbol: KtFileSymbol(customSerlializable.kt)
getContainingJvmClassName: test.Serializer getContainingJvmClassName: test.Serializer
getContainingModule: KtSourceModule "Sources of main" getContainingModule: KtSourceModule "Sources of main"
deprecationStatus: null deprecationStatus: null
@@ -119,7 +119,7 @@ KtFunctionSymbol:
annotationsList: [] annotationsList: []
ownTypeArguments: [] ownTypeArguments: []
type: test/Serializer type: test/Serializer
getContainingFileSymbol: null getContainingFileSymbol: KtFileSymbol(customSerlializable.kt)
getContainingJvmClassName: test.Serializer getContainingJvmClassName: test.Serializer
getContainingModule: KtSourceModule "Sources of main" getContainingModule: KtSourceModule "Sources of main"
deprecationStatus: null deprecationStatus: null
@@ -31,7 +31,7 @@ KtFunctionSymbol:
annotationsList: [] annotationsList: []
ownTypeArguments: [] ownTypeArguments: []
type: test/WithGeneratedCompanion.Companion type: test/WithGeneratedCompanion.Companion
getContainingFileSymbol: null getContainingFileSymbol: KtFileSymbol(generatedCompanionWithFoo.kt)
getContainingJvmClassName: test.WithGeneratedCompanion.Companion getContainingJvmClassName: test.WithGeneratedCompanion.Companion
getContainingModule: KtSourceModule "Sources of main" getContainingModule: KtSourceModule "Sources of main"
deprecationStatus: null deprecationStatus: null
@@ -31,7 +31,7 @@ KtFunctionSymbol:
annotationsList: [] annotationsList: []
ownTypeArguments: [] ownTypeArguments: []
type: test/MyClass type: test/MyClass
getContainingFileSymbol: null getContainingFileSymbol: KtFileSymbol(nestedClassAndMaterializeMember.kt)
getContainingJvmClassName: test.MyClass getContainingJvmClassName: test.MyClass
getContainingModule: KtSourceModule "Sources of main" getContainingModule: KtSourceModule "Sources of main"
deprecationStatus: null deprecationStatus: null
@@ -200,7 +200,7 @@ KtNamedClassOrObjectSymbol:
symbolKind: CLASS_MEMBER symbolKind: CLASS_MEMBER
typeParameters: [] typeParameters: []
visibility: Public visibility: Public
getContainingFileSymbol: null getContainingFileSymbol: KtFileSymbol(nestedClassAndMaterializeMember.kt)
getContainingModule: KtSourceModule "Sources of main" getContainingModule: KtSourceModule "Sources of main"
annotationApplicableTargets: null annotationApplicableTargets: null
deprecationStatus: null deprecationStatus: null
@@ -23,7 +23,7 @@ KtNamedClassOrObjectSymbol:
symbolKind: CLASS_MEMBER symbolKind: CLASS_MEMBER
typeParameters: [] typeParameters: []
visibility: Public visibility: Public
getContainingFileSymbol: null getContainingFileSymbol: KtFileSymbol(generatedCompanionWorksAsValue.kt)
getContainingModule: KtSourceModule "Sources of main" getContainingModule: KtSourceModule "Sources of main"
annotationApplicableTargets: null annotationApplicableTargets: null
deprecationStatus: null deprecationStatus: null
@@ -6,8 +6,10 @@
package org.jetbrains.kotlin.fir.plugin package org.jetbrains.kotlin.fir.plugin
import org.jetbrains.kotlin.GeneratedDeclarationKey import org.jetbrains.kotlin.GeneratedDeclarationKey
import org.jetbrains.kotlin.KtFakeSourceElementKind
import org.jetbrains.kotlin.descriptors.ClassKind import org.jetbrains.kotlin.descriptors.ClassKind
import org.jetbrains.kotlin.descriptors.Modality import org.jetbrains.kotlin.descriptors.Modality
import org.jetbrains.kotlin.fakeElement
import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.FirSession
import org.jetbrains.kotlin.fir.containingClassForLocalAttr import org.jetbrains.kotlin.fir.containingClassForLocalAttr
import org.jetbrains.kotlin.fir.declarations.FirRegularClass import org.jetbrains.kotlin.fir.declarations.FirRegularClass
@@ -68,6 +70,7 @@ public class ClassBuildingContext(
classKind = this@ClassBuildingContext.classKind classKind = this@ClassBuildingContext.classKind
scopeProvider = session.kotlinScopeProvider scopeProvider = session.kotlinScopeProvider
status = generateStatus() status = generateStatus()
source = owner?.source?.fakeElement(KtFakeSourceElementKind.PluginGenerated)
name = classId.shortClassName name = classId.shortClassName
symbol = FirRegularClassSymbol(classId) symbol = FirRegularClassSymbol(classId)
@@ -6,8 +6,10 @@
package org.jetbrains.kotlin.fir.plugin package org.jetbrains.kotlin.fir.plugin
import org.jetbrains.kotlin.GeneratedDeclarationKey import org.jetbrains.kotlin.GeneratedDeclarationKey
import org.jetbrains.kotlin.KtFakeSourceElementKind
import org.jetbrains.kotlin.descriptors.Modality import org.jetbrains.kotlin.descriptors.Modality
import org.jetbrains.kotlin.descriptors.Visibility import org.jetbrains.kotlin.descriptors.Visibility
import org.jetbrains.kotlin.fakeElement
import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.FirSession
import org.jetbrains.kotlin.fir.declarations.* import org.jetbrains.kotlin.fir.declarations.*
import org.jetbrains.kotlin.fir.declarations.builder.buildProperty import org.jetbrains.kotlin.fir.declarations.builder.buildProperty
@@ -69,6 +71,8 @@ public class PropertyBuildingContext(
moduleData = session.moduleData moduleData = session.moduleData
origin = key.origin origin = key.origin
source = owner?.source?.fakeElement(KtFakeSourceElementKind.PluginGenerated)
symbol = FirPropertySymbol(callableId) symbol = FirPropertySymbol(callableId)
name = callableId.callableName name = callableId.callableName
@@ -6,6 +6,8 @@
package org.jetbrains.kotlin.fir.plugin package org.jetbrains.kotlin.fir.plugin
import org.jetbrains.kotlin.GeneratedDeclarationKey import org.jetbrains.kotlin.GeneratedDeclarationKey
import org.jetbrains.kotlin.KtFakeSourceElementKind
import org.jetbrains.kotlin.fakeElement
import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.FirSession
import org.jetbrains.kotlin.fir.declarations.FirResolvePhase import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
import org.jetbrains.kotlin.fir.declarations.FirSimpleFunction import org.jetbrains.kotlin.fir.declarations.FirSimpleFunction
@@ -57,6 +59,8 @@ public class SimpleFunctionBuildingContext(
moduleData = session.moduleData moduleData = session.moduleData
origin = key.origin origin = key.origin
source = owner?.source?.fakeElement(KtFakeSourceElementKind.PluginGenerated)
symbol = FirNamedFunctionSymbol(callableId) symbol = FirNamedFunctionSymbol(callableId)
name = callableId.callableName name = callableId.callableName
@@ -309,6 +309,9 @@ sealed class KtFakeSourceElementKind(final override val shouldSkipErrorTypeRepor
// For it.functionFromAny() calls on a stub type // For it.functionFromAny() calls on a stub type
object CastToAnyForStubTypes : KtFakeSourceElementKind() object CastToAnyForStubTypes : KtFakeSourceElementKind()
// For plugin-generated things
object PluginGenerated : KtFakeSourceElementKind()
} }
sealed class AbstractKtSourceElement { sealed class AbstractKtSourceElement {
+159 -118
View File
@@ -8,6 +8,8 @@ public final class ListOfUsers$$serializer : java/lang/Object, kotlinx/serializa
DUP DUP
INVOKESPECIAL (ListOfUsers$$serializer, <init>, ()V) INVOKESPECIAL (ListOfUsers$$serializer, <init>, ()V)
PUTSTATIC (ListOfUsers$$serializer, INSTANCE, LListOfUsers$$serializer;) PUTSTATIC (ListOfUsers$$serializer, INSTANCE, LListOfUsers$$serializer;)
LABEL (L0)
LINENUMBER (12)
NEW (kotlinx/serialization/internal/PluginGeneratedSerialDescriptor) NEW (kotlinx/serialization/internal/PluginGeneratedSerialDescriptor)
DUP DUP
LDC (ListOfUsers) LDC (ListOfUsers)
@@ -23,6 +25,8 @@ public final class ListOfUsers$$serializer : java/lang/Object, kotlinx/serializa
ALOAD (0) ALOAD (0)
CHECKCAST (kotlinx/serialization/descriptors/SerialDescriptor) CHECKCAST (kotlinx/serialization/descriptors/SerialDescriptor)
PUTSTATIC (ListOfUsers$$serializer, descriptor, Lkotlinx/serialization/descriptors/SerialDescriptor;) PUTSTATIC (ListOfUsers$$serializer, descriptor, Lkotlinx/serialization/descriptors/SerialDescriptor;)
LABEL (L1)
LINENUMBER (13)
RETURN RETURN
} }
@@ -36,6 +40,7 @@ public final class ListOfUsers$$serializer : java/lang/Object, kotlinx/serializa
public final kotlinx.serialization.KSerializer[] childSerializers() { public final kotlinx.serialization.KSerializer[] childSerializers() {
LABEL (L0) LABEL (L0)
LINENUMBER (12)
INVOKESTATIC (ListOfUsers, access$get$childSerializers$cp, ()[Lkotlinx/serialization/KSerializer;) INVOKESTATIC (ListOfUsers, access$get$childSerializers$cp, ()[Lkotlinx/serialization/KSerializer;)
ASTORE (1) ASTORE (1)
ICONST_1 ICONST_1
@@ -57,6 +62,8 @@ public final class ListOfUsers$$serializer : java/lang/Object, kotlinx/serializa
ALOAD (1) ALOAD (1)
LDC (decoder) LDC (decoder)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V) INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V)
LABEL (L1)
LINENUMBER (12)
GETSTATIC (ListOfUsers$$serializer, descriptor, Lkotlinx/serialization/descriptors/SerialDescriptor;) GETSTATIC (ListOfUsers$$serializer, descriptor, Lkotlinx/serialization/descriptors/SerialDescriptor;)
ASTORE (2) ASTORE (2)
ICONST_1 ICONST_1
@@ -73,7 +80,40 @@ public final class ListOfUsers$$serializer : java/lang/Object, kotlinx/serializa
ASTORE (8) ASTORE (8)
ALOAD (7) ALOAD (7)
INVOKEINTERFACE (kotlinx/serialization/encoding/CompositeDecoder, decodeSequentially, ()Z) INVOKEINTERFACE (kotlinx/serialization/encoding/CompositeDecoder, decodeSequentially, ()Z)
IFEQ (L1) IFEQ (L2)
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;)
CHECKCAST (java/util/List)
ASTORE (6)
ILOAD (5)
ICONST_1
IOR
ISTORE (5)
GOTO (L3)
LABEL (L2)
ILOAD (3)
IFEQ (L3)
ALOAD (7)
ALOAD (2)
INVOKEINTERFACE (kotlinx/serialization/encoding/CompositeDecoder, decodeElementIndex, (Lkotlinx/serialization/descriptors/SerialDescriptor;)I)
ISTORE (4)
ILOAD (4)
TABLESWITCH
-1: L4
0: L5
default: L6
LABEL (L4)
ICONST_0
ISTORE (3)
GOTO (L2)
LABEL (L5)
ALOAD (7) ALOAD (7)
ALOAD (2) ALOAD (2)
ICONST_0 ICONST_0
@@ -90,46 +130,13 @@ public final class ListOfUsers$$serializer : java/lang/Object, kotlinx/serializa
IOR IOR
ISTORE (5) ISTORE (5)
GOTO (L2) GOTO (L2)
LABEL (L1) LABEL (L6)
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;)
CHECKCAST (java/util/List)
ASTORE (6)
ILOAD (5)
ICONST_1
IOR
ISTORE (5)
GOTO (L1)
LABEL (L5)
NEW (kotlinx/serialization/UnknownFieldException) NEW (kotlinx/serialization/UnknownFieldException)
DUP DUP
ILOAD (4) ILOAD (4)
INVOKESPECIAL (kotlinx/serialization/UnknownFieldException, <init>, (I)V) INVOKESPECIAL (kotlinx/serialization/UnknownFieldException, <init>, (I)V)
ATHROW ATHROW
LABEL (L2) LABEL (L3)
ALOAD (7) ALOAD (7)
ALOAD (2) ALOAD (2)
INVOKEINTERFACE (kotlinx/serialization/encoding/CompositeDecoder, endStructure, (Lkotlinx/serialization/descriptors/SerialDescriptor;)V) INVOKEINTERFACE (kotlinx/serialization/encoding/CompositeDecoder, endStructure, (Lkotlinx/serialization/descriptors/SerialDescriptor;)V)
@@ -140,11 +147,12 @@ public final class ListOfUsers$$serializer : java/lang/Object, kotlinx/serializa
ACONST_NULL ACONST_NULL
INVOKESPECIAL (ListOfUsers, <init>, (ILjava/util/List;Lkotlinx/serialization/internal/SerializationConstructorMarker;)V) INVOKESPECIAL (ListOfUsers, <init>, (ILjava/util/List;Lkotlinx/serialization/internal/SerializationConstructorMarker;)V)
ARETURN ARETURN
LABEL (L6) LABEL (L7)
} }
public java.lang.Object deserialize(kotlinx.serialization.encoding.Decoder decoder) { public java.lang.Object deserialize(kotlinx.serialization.encoding.Decoder decoder) {
LABEL (L0) LABEL (L0)
LINENUMBER (12)
ALOAD (0) ALOAD (0)
ALOAD (1) ALOAD (1)
INVOKEVIRTUAL (ListOfUsers$$serializer, deserialize, (Lkotlinx/serialization/encoding/Decoder;)LListOfUsers;) INVOKEVIRTUAL (ListOfUsers$$serializer, deserialize, (Lkotlinx/serialization/encoding/Decoder;)LListOfUsers;)
@@ -167,6 +175,8 @@ public final class ListOfUsers$$serializer : java/lang/Object, kotlinx/serializa
ALOAD (2) ALOAD (2)
LDC (value) LDC (value)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V) INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V)
LABEL (L1)
LINENUMBER (12)
GETSTATIC (ListOfUsers$$serializer, descriptor, Lkotlinx/serialization/descriptors/SerialDescriptor;) GETSTATIC (ListOfUsers$$serializer, descriptor, Lkotlinx/serialization/descriptors/SerialDescriptor;)
ASTORE (3) ASTORE (3)
ALOAD (1) ALOAD (1)
@@ -180,12 +190,15 @@ public final class ListOfUsers$$serializer : java/lang/Object, kotlinx/serializa
ALOAD (4) ALOAD (4)
ALOAD (3) ALOAD (3)
INVOKEINTERFACE (kotlinx/serialization/encoding/CompositeEncoder, endStructure, (Lkotlinx/serialization/descriptors/SerialDescriptor;)V) INVOKEINTERFACE (kotlinx/serialization/encoding/CompositeEncoder, endStructure, (Lkotlinx/serialization/descriptors/SerialDescriptor;)V)
LABEL (L2)
LINENUMBER (13)
RETURN RETURN
LABEL (L1) LABEL (L3)
} }
public void serialize(kotlinx.serialization.encoding.Encoder encoder, java.lang.Object value) { public void serialize(kotlinx.serialization.encoding.Encoder encoder, java.lang.Object value) {
LABEL (L0) LABEL (L0)
LINENUMBER (12)
ALOAD (0) ALOAD (0)
ALOAD (1) ALOAD (1)
ALOAD (2) ALOAD (2)
@@ -231,6 +244,8 @@ public final class ListOfUsers : java/lang/Object {
ACONST_NULL ACONST_NULL
INVOKESPECIAL (ListOfUsers$Companion, <init>, (Lkotlin/jvm/internal/DefaultConstructorMarker;)V) INVOKESPECIAL (ListOfUsers$Companion, <init>, (Lkotlin/jvm/internal/DefaultConstructorMarker;)V)
PUTSTATIC (ListOfUsers, Companion, LListOfUsers$Companion;) PUTSTATIC (ListOfUsers, Companion, LListOfUsers$Companion;)
LABEL (L0)
LINENUMBER (12)
ICONST_1 ICONST_1
ANEWARRAY (kotlinx/serialization/KSerializer) ANEWARRAY (kotlinx/serialization/KSerializer)
ASTORE (0) ASTORE (0)
@@ -320,6 +335,8 @@ public final class OptionalUser$$serializer : java/lang/Object, kotlinx/serializ
DUP DUP
INVOKESPECIAL (OptionalUser$$serializer, <init>, ()V) INVOKESPECIAL (OptionalUser$$serializer, <init>, ()V)
PUTSTATIC (OptionalUser$$serializer, INSTANCE, LOptionalUser$$serializer;) PUTSTATIC (OptionalUser$$serializer, INSTANCE, LOptionalUser$$serializer;)
LABEL (L0)
LINENUMBER (9)
NEW (kotlinx/serialization/internal/PluginGeneratedSerialDescriptor) NEW (kotlinx/serialization/internal/PluginGeneratedSerialDescriptor)
DUP DUP
LDC (OptionalUser) LDC (OptionalUser)
@@ -335,6 +352,8 @@ public final class OptionalUser$$serializer : java/lang/Object, kotlinx/serializ
ALOAD (0) ALOAD (0)
CHECKCAST (kotlinx/serialization/descriptors/SerialDescriptor) CHECKCAST (kotlinx/serialization/descriptors/SerialDescriptor)
PUTSTATIC (OptionalUser$$serializer, descriptor, Lkotlinx/serialization/descriptors/SerialDescriptor;) PUTSTATIC (OptionalUser$$serializer, descriptor, Lkotlinx/serialization/descriptors/SerialDescriptor;)
LABEL (L1)
LINENUMBER (10)
RETURN RETURN
} }
@@ -348,6 +367,7 @@ public final class OptionalUser$$serializer : java/lang/Object, kotlinx/serializ
public final kotlinx.serialization.KSerializer[] childSerializers() { public final kotlinx.serialization.KSerializer[] childSerializers() {
LABEL (L0) LABEL (L0)
LINENUMBER (9)
ICONST_1 ICONST_1
ANEWARRAY (kotlinx/serialization/KSerializer) ANEWARRAY (kotlinx/serialization/KSerializer)
ASTORE (1) ASTORE (1)
@@ -365,6 +385,8 @@ public final class OptionalUser$$serializer : java/lang/Object, kotlinx/serializ
ALOAD (1) ALOAD (1)
LDC (decoder) LDC (decoder)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V) INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V)
LABEL (L1)
LINENUMBER (9)
GETSTATIC (OptionalUser$$serializer, descriptor, Lkotlinx/serialization/descriptors/SerialDescriptor;) GETSTATIC (OptionalUser$$serializer, descriptor, Lkotlinx/serialization/descriptors/SerialDescriptor;)
ASTORE (2) ASTORE (2)
ICONST_1 ICONST_1
@@ -379,7 +401,38 @@ public final class OptionalUser$$serializer : java/lang/Object, kotlinx/serializ
ASTORE (7) ASTORE (7)
ALOAD (7) ALOAD (7)
INVOKEINTERFACE (kotlinx/serialization/encoding/CompositeDecoder, decodeSequentially, ()Z) INVOKEINTERFACE (kotlinx/serialization/encoding/CompositeDecoder, decodeSequentially, ()Z)
IFEQ (L1) IFEQ (L2)
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;)
CHECKCAST (User)
ASTORE (6)
ILOAD (5)
ICONST_1
IOR
ISTORE (5)
GOTO (L3)
LABEL (L2)
ILOAD (3)
IFEQ (L3)
ALOAD (7)
ALOAD (2)
INVOKEINTERFACE (kotlinx/serialization/encoding/CompositeDecoder, decodeElementIndex, (Lkotlinx/serialization/descriptors/SerialDescriptor;)I)
ISTORE (4)
ILOAD (4)
TABLESWITCH
-1: L4
0: L5
default: L6
LABEL (L4)
ICONST_0
ISTORE (3)
GOTO (L2)
LABEL (L5)
ALOAD (7) ALOAD (7)
ALOAD (2) ALOAD (2)
ICONST_0 ICONST_0
@@ -394,44 +447,13 @@ public final class OptionalUser$$serializer : java/lang/Object, kotlinx/serializ
IOR IOR
ISTORE (5) ISTORE (5)
GOTO (L2) GOTO (L2)
LABEL (L1) LABEL (L6)
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;)
CHECKCAST (User)
ASTORE (6)
ILOAD (5)
ICONST_1
IOR
ISTORE (5)
GOTO (L1)
LABEL (L5)
NEW (kotlinx/serialization/UnknownFieldException) NEW (kotlinx/serialization/UnknownFieldException)
DUP DUP
ILOAD (4) ILOAD (4)
INVOKESPECIAL (kotlinx/serialization/UnknownFieldException, <init>, (I)V) INVOKESPECIAL (kotlinx/serialization/UnknownFieldException, <init>, (I)V)
ATHROW ATHROW
LABEL (L2) LABEL (L3)
ALOAD (7) ALOAD (7)
ALOAD (2) ALOAD (2)
INVOKEINTERFACE (kotlinx/serialization/encoding/CompositeDecoder, endStructure, (Lkotlinx/serialization/descriptors/SerialDescriptor;)V) INVOKEINTERFACE (kotlinx/serialization/encoding/CompositeDecoder, endStructure, (Lkotlinx/serialization/descriptors/SerialDescriptor;)V)
@@ -442,11 +464,12 @@ public final class OptionalUser$$serializer : java/lang/Object, kotlinx/serializ
ACONST_NULL ACONST_NULL
INVOKESPECIAL (OptionalUser, <init>, (ILUser;Lkotlinx/serialization/internal/SerializationConstructorMarker;)V) INVOKESPECIAL (OptionalUser, <init>, (ILUser;Lkotlinx/serialization/internal/SerializationConstructorMarker;)V)
ARETURN ARETURN
LABEL (L6) LABEL (L7)
} }
public java.lang.Object deserialize(kotlinx.serialization.encoding.Decoder decoder) { public java.lang.Object deserialize(kotlinx.serialization.encoding.Decoder decoder) {
LABEL (L0) LABEL (L0)
LINENUMBER (9)
ALOAD (0) ALOAD (0)
ALOAD (1) ALOAD (1)
INVOKEVIRTUAL (OptionalUser$$serializer, deserialize, (Lkotlinx/serialization/encoding/Decoder;)LOptionalUser;) INVOKEVIRTUAL (OptionalUser$$serializer, deserialize, (Lkotlinx/serialization/encoding/Decoder;)LOptionalUser;)
@@ -469,6 +492,8 @@ public final class OptionalUser$$serializer : java/lang/Object, kotlinx/serializ
ALOAD (2) ALOAD (2)
LDC (value) LDC (value)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V) INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V)
LABEL (L1)
LINENUMBER (9)
GETSTATIC (OptionalUser$$serializer, descriptor, Lkotlinx/serialization/descriptors/SerialDescriptor;) GETSTATIC (OptionalUser$$serializer, descriptor, Lkotlinx/serialization/descriptors/SerialDescriptor;)
ASTORE (3) ASTORE (3)
ALOAD (1) ALOAD (1)
@@ -482,12 +507,15 @@ public final class OptionalUser$$serializer : java/lang/Object, kotlinx/serializ
ALOAD (4) ALOAD (4)
ALOAD (3) ALOAD (3)
INVOKEINTERFACE (kotlinx/serialization/encoding/CompositeEncoder, endStructure, (Lkotlinx/serialization/descriptors/SerialDescriptor;)V) INVOKEINTERFACE (kotlinx/serialization/encoding/CompositeEncoder, endStructure, (Lkotlinx/serialization/descriptors/SerialDescriptor;)V)
LABEL (L2)
LINENUMBER (10)
RETURN RETURN
LABEL (L1) LABEL (L3)
} }
public void serialize(kotlinx.serialization.encoding.Encoder encoder, java.lang.Object value) { public void serialize(kotlinx.serialization.encoding.Encoder encoder, java.lang.Object value) {
LABEL (L0) LABEL (L0)
LINENUMBER (9)
ALOAD (0) ALOAD (0)
ALOAD (1) ALOAD (1)
ALOAD (2) ALOAD (2)
@@ -677,6 +705,8 @@ public final class User$$serializer : java/lang/Object, kotlinx/serialization/in
DUP DUP
INVOKESPECIAL (User$$serializer, <init>, ()V) INVOKESPECIAL (User$$serializer, <init>, ()V)
PUTSTATIC (User$$serializer, INSTANCE, LUser$$serializer;) PUTSTATIC (User$$serializer, INSTANCE, LUser$$serializer;)
LABEL (L0)
LINENUMBER (6)
NEW (kotlinx/serialization/internal/PluginGeneratedSerialDescriptor) NEW (kotlinx/serialization/internal/PluginGeneratedSerialDescriptor)
DUP DUP
LDC (User) LDC (User)
@@ -696,6 +726,8 @@ public final class User$$serializer : java/lang/Object, kotlinx/serialization/in
ALOAD (0) ALOAD (0)
CHECKCAST (kotlinx/serialization/descriptors/SerialDescriptor) CHECKCAST (kotlinx/serialization/descriptors/SerialDescriptor)
PUTSTATIC (User$$serializer, descriptor, Lkotlinx/serialization/descriptors/SerialDescriptor;) PUTSTATIC (User$$serializer, descriptor, Lkotlinx/serialization/descriptors/SerialDescriptor;)
LABEL (L1)
LINENUMBER (7)
RETURN RETURN
} }
@@ -709,6 +741,7 @@ public final class User$$serializer : java/lang/Object, kotlinx/serialization/in
public final kotlinx.serialization.KSerializer[] childSerializers() { public final kotlinx.serialization.KSerializer[] childSerializers() {
LABEL (L0) LABEL (L0)
LINENUMBER (6)
ICONST_2 ICONST_2
ANEWARRAY (kotlinx/serialization/KSerializer) ANEWARRAY (kotlinx/serialization/KSerializer)
ASTORE (1) ASTORE (1)
@@ -730,6 +763,8 @@ public final class User$$serializer : java/lang/Object, kotlinx/serialization/in
ALOAD (1) ALOAD (1)
LDC (decoder) LDC (decoder)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V) INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V)
LABEL (L1)
LINENUMBER (6)
GETSTATIC (User$$serializer, descriptor, Lkotlinx/serialization/descriptors/SerialDescriptor;) GETSTATIC (User$$serializer, descriptor, Lkotlinx/serialization/descriptors/SerialDescriptor;)
ASTORE (2) ASTORE (2)
ICONST_1 ICONST_1
@@ -746,7 +781,7 @@ public final class User$$serializer : java/lang/Object, kotlinx/serialization/in
ASTORE (8) ASTORE (8)
ALOAD (8) ALOAD (8)
INVOKEINTERFACE (kotlinx/serialization/encoding/CompositeDecoder, decodeSequentially, ()Z) INVOKEINTERFACE (kotlinx/serialization/encoding/CompositeDecoder, decodeSequentially, ()Z)
IFEQ (L1) IFEQ (L2)
ALOAD (8) ALOAD (8)
ALOAD (2) ALOAD (2)
ICONST_0 ICONST_0
@@ -756,6 +791,45 @@ public final class User$$serializer : java/lang/Object, kotlinx/serialization/in
ICONST_1 ICONST_1
IOR IOR
ISTORE (5) 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 (L3)
LABEL (L2)
ILOAD (3)
IFEQ (L3)
ALOAD (8)
ALOAD (2)
INVOKEINTERFACE (kotlinx/serialization/encoding/CompositeDecoder, decodeElementIndex, (Lkotlinx/serialization/descriptors/SerialDescriptor;)I)
ISTORE (4)
ILOAD (4)
TABLESWITCH
-1: L4
0: L5
1: L6
default: L7
LABEL (L4)
ICONST_0
ISTORE (3)
GOTO (L2)
LABEL (L5)
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 (L2)
LABEL (L6)
ALOAD (8) ALOAD (8)
ALOAD (2) ALOAD (2)
ICONST_1 ICONST_1
@@ -766,52 +840,13 @@ public final class User$$serializer : java/lang/Object, kotlinx/serialization/in
IOR IOR
ISTORE (5) ISTORE (5)
GOTO (L2) GOTO (L2)
LABEL (L1) LABEL (L7)
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) NEW (kotlinx/serialization/UnknownFieldException)
DUP DUP
ILOAD (4) ILOAD (4)
INVOKESPECIAL (kotlinx/serialization/UnknownFieldException, <init>, (I)V) INVOKESPECIAL (kotlinx/serialization/UnknownFieldException, <init>, (I)V)
ATHROW ATHROW
LABEL (L2) LABEL (L3)
ALOAD (8) ALOAD (8)
ALOAD (2) ALOAD (2)
INVOKEINTERFACE (kotlinx/serialization/encoding/CompositeDecoder, endStructure, (Lkotlinx/serialization/descriptors/SerialDescriptor;)V) INVOKEINTERFACE (kotlinx/serialization/encoding/CompositeDecoder, endStructure, (Lkotlinx/serialization/descriptors/SerialDescriptor;)V)
@@ -823,11 +858,12 @@ public final class User$$serializer : java/lang/Object, kotlinx/serialization/in
ACONST_NULL ACONST_NULL
INVOKESPECIAL (User, <init>, (ILjava/lang/String;Ljava/lang/String;Lkotlinx/serialization/internal/SerializationConstructorMarker;)V) INVOKESPECIAL (User, <init>, (ILjava/lang/String;Ljava/lang/String;Lkotlinx/serialization/internal/SerializationConstructorMarker;)V)
ARETURN ARETURN
LABEL (L7) LABEL (L8)
} }
public java.lang.Object deserialize(kotlinx.serialization.encoding.Decoder decoder) { public java.lang.Object deserialize(kotlinx.serialization.encoding.Decoder decoder) {
LABEL (L0) LABEL (L0)
LINENUMBER (6)
ALOAD (0) ALOAD (0)
ALOAD (1) ALOAD (1)
INVOKEVIRTUAL (User$$serializer, deserialize, (Lkotlinx/serialization/encoding/Decoder;)LUser;) INVOKEVIRTUAL (User$$serializer, deserialize, (Lkotlinx/serialization/encoding/Decoder;)LUser;)
@@ -850,6 +886,8 @@ public final class User$$serializer : java/lang/Object, kotlinx/serialization/in
ALOAD (2) ALOAD (2)
LDC (value) LDC (value)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V) INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V)
LABEL (L1)
LINENUMBER (6)
GETSTATIC (User$$serializer, descriptor, Lkotlinx/serialization/descriptors/SerialDescriptor;) GETSTATIC (User$$serializer, descriptor, Lkotlinx/serialization/descriptors/SerialDescriptor;)
ASTORE (3) ASTORE (3)
ALOAD (1) ALOAD (1)
@@ -863,12 +901,15 @@ public final class User$$serializer : java/lang/Object, kotlinx/serialization/in
ALOAD (4) ALOAD (4)
ALOAD (3) ALOAD (3)
INVOKEINTERFACE (kotlinx/serialization/encoding/CompositeEncoder, endStructure, (Lkotlinx/serialization/descriptors/SerialDescriptor;)V) INVOKEINTERFACE (kotlinx/serialization/encoding/CompositeEncoder, endStructure, (Lkotlinx/serialization/descriptors/SerialDescriptor;)V)
LABEL (L2)
LINENUMBER (7)
RETURN RETURN
LABEL (L1) LABEL (L3)
} }
public void serialize(kotlinx.serialization.encoding.Encoder encoder, java.lang.Object value) { public void serialize(kotlinx.serialization.encoding.Encoder encoder, java.lang.Object value) {
LABEL (L0) LABEL (L0)
LINENUMBER (6)
ALOAD (0) ALOAD (0)
ALOAD (1) ALOAD (1)
ALOAD (2) ALOAD (2)
@@ -8,6 +8,8 @@ public final class Container$$serializer : java/lang/Object, kotlinx/serializati
DUP DUP
INVOKESPECIAL (Container$$serializer, <init>, ()V) INVOKESPECIAL (Container$$serializer, <init>, ()V)
PUTSTATIC (Container$$serializer, INSTANCE, LContainer$$serializer;) PUTSTATIC (Container$$serializer, INSTANCE, LContainer$$serializer;)
LABEL (L0)
LINENUMBER (18)
NEW (kotlinx/serialization/internal/PluginGeneratedSerialDescriptor) NEW (kotlinx/serialization/internal/PluginGeneratedSerialDescriptor)
DUP DUP
LDC (Container) LDC (Container)
@@ -23,6 +25,8 @@ public final class Container$$serializer : java/lang/Object, kotlinx/serializati
ALOAD (0) ALOAD (0)
CHECKCAST (kotlinx/serialization/descriptors/SerialDescriptor) CHECKCAST (kotlinx/serialization/descriptors/SerialDescriptor)
PUTSTATIC (Container$$serializer, descriptor, Lkotlinx/serialization/descriptors/SerialDescriptor;) PUTSTATIC (Container$$serializer, descriptor, Lkotlinx/serialization/descriptors/SerialDescriptor;)
LABEL (L1)
LINENUMBER (19)
RETURN RETURN
} }
@@ -36,6 +40,7 @@ public final class Container$$serializer : java/lang/Object, kotlinx/serializati
public final kotlinx.serialization.KSerializer[] childSerializers() { public final kotlinx.serialization.KSerializer[] childSerializers() {
LABEL (L0) LABEL (L0)
LINENUMBER (18)
INVOKESTATIC (Container, access$get$childSerializers$cp, ()[Lkotlinx/serialization/KSerializer;) INVOKESTATIC (Container, access$get$childSerializers$cp, ()[Lkotlinx/serialization/KSerializer;)
ASTORE (1) ASTORE (1)
ICONST_1 ICONST_1
@@ -57,6 +62,8 @@ public final class Container$$serializer : java/lang/Object, kotlinx/serializati
ALOAD (1) ALOAD (1)
LDC (decoder) LDC (decoder)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V) INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V)
LABEL (L1)
LINENUMBER (18)
GETSTATIC (Container$$serializer, descriptor, Lkotlinx/serialization/descriptors/SerialDescriptor;) GETSTATIC (Container$$serializer, descriptor, Lkotlinx/serialization/descriptors/SerialDescriptor;)
ASTORE (2) ASTORE (2)
ICONST_1 ICONST_1
@@ -73,7 +80,40 @@ public final class Container$$serializer : java/lang/Object, kotlinx/serializati
ASTORE (8) ASTORE (8)
ALOAD (7) ALOAD (7)
INVOKEINTERFACE (kotlinx/serialization/encoding/CompositeDecoder, decodeSequentially, ()Z) INVOKEINTERFACE (kotlinx/serialization/encoding/CompositeDecoder, decodeSequentially, ()Z)
IFEQ (L1) IFEQ (L2)
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;)
CHECKCAST (Result)
ASTORE (6)
ILOAD (5)
ICONST_1
IOR
ISTORE (5)
GOTO (L3)
LABEL (L2)
ILOAD (3)
IFEQ (L3)
ALOAD (7)
ALOAD (2)
INVOKEINTERFACE (kotlinx/serialization/encoding/CompositeDecoder, decodeElementIndex, (Lkotlinx/serialization/descriptors/SerialDescriptor;)I)
ISTORE (4)
ILOAD (4)
TABLESWITCH
-1: L4
0: L5
default: L6
LABEL (L4)
ICONST_0
ISTORE (3)
GOTO (L2)
LABEL (L5)
ALOAD (7) ALOAD (7)
ALOAD (2) ALOAD (2)
ICONST_0 ICONST_0
@@ -90,46 +130,13 @@ public final class Container$$serializer : java/lang/Object, kotlinx/serializati
IOR IOR
ISTORE (5) ISTORE (5)
GOTO (L2) GOTO (L2)
LABEL (L1) LABEL (L6)
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;)
CHECKCAST (Result)
ASTORE (6)
ILOAD (5)
ICONST_1
IOR
ISTORE (5)
GOTO (L1)
LABEL (L5)
NEW (kotlinx/serialization/UnknownFieldException) NEW (kotlinx/serialization/UnknownFieldException)
DUP DUP
ILOAD (4) ILOAD (4)
INVOKESPECIAL (kotlinx/serialization/UnknownFieldException, <init>, (I)V) INVOKESPECIAL (kotlinx/serialization/UnknownFieldException, <init>, (I)V)
ATHROW ATHROW
LABEL (L2) LABEL (L3)
ALOAD (7) ALOAD (7)
ALOAD (2) ALOAD (2)
INVOKEINTERFACE (kotlinx/serialization/encoding/CompositeDecoder, endStructure, (Lkotlinx/serialization/descriptors/SerialDescriptor;)V) INVOKEINTERFACE (kotlinx/serialization/encoding/CompositeDecoder, endStructure, (Lkotlinx/serialization/descriptors/SerialDescriptor;)V)
@@ -140,11 +147,12 @@ public final class Container$$serializer : java/lang/Object, kotlinx/serializati
ACONST_NULL ACONST_NULL
INVOKESPECIAL (Container, <init>, (ILResult;Lkotlinx/serialization/internal/SerializationConstructorMarker;)V) INVOKESPECIAL (Container, <init>, (ILResult;Lkotlinx/serialization/internal/SerializationConstructorMarker;)V)
ARETURN ARETURN
LABEL (L6) LABEL (L7)
} }
public java.lang.Object deserialize(kotlinx.serialization.encoding.Decoder decoder) { public java.lang.Object deserialize(kotlinx.serialization.encoding.Decoder decoder) {
LABEL (L0) LABEL (L0)
LINENUMBER (18)
ALOAD (0) ALOAD (0)
ALOAD (1) ALOAD (1)
INVOKEVIRTUAL (Container$$serializer, deserialize, (Lkotlinx/serialization/encoding/Decoder;)LContainer;) INVOKEVIRTUAL (Container$$serializer, deserialize, (Lkotlinx/serialization/encoding/Decoder;)LContainer;)
@@ -180,6 +188,7 @@ public final class Container$Companion : java/lang/Object {
public final kotlinx.serialization.KSerializer serializer() { public final kotlinx.serialization.KSerializer serializer() {
LABEL (L0) LABEL (L0)
LINENUMBER (18)
GETSTATIC (Container$$serializer, INSTANCE, LContainer$$serializer;) GETSTATIC (Container$$serializer, INSTANCE, LContainer$$serializer;)
CHECKCAST (kotlinx/serialization/KSerializer) CHECKCAST (kotlinx/serialization/KSerializer)
ARETURN ARETURN
@@ -200,6 +209,8 @@ public final class Container : java/lang/Object {
ACONST_NULL ACONST_NULL
INVOKESPECIAL (Container$Companion, <init>, (Lkotlin/jvm/internal/DefaultConstructorMarker;)V) INVOKESPECIAL (Container$Companion, <init>, (Lkotlin/jvm/internal/DefaultConstructorMarker;)V)
PUTSTATIC (Container, Companion, LContainer$Companion;) PUTSTATIC (Container, Companion, LContainer$Companion;)
LABEL (L0)
LINENUMBER (18)
ICONST_1 ICONST_1
ANEWARRAY (kotlinx/serialization/KSerializer) ANEWARRAY (kotlinx/serialization/KSerializer)
ASTORE (0) ASTORE (0)
@@ -297,6 +308,7 @@ public final class Result$Companion : java/lang/Object {
public final kotlinx.serialization.KSerializer serializer() { public final kotlinx.serialization.KSerializer serializer() {
LABEL (L0) LABEL (L0)
LINENUMBER (12)
ALOAD (0) ALOAD (0)
INVOKESPECIAL (Result$Companion, get$cachedSerializer, ()Lkotlinx/serialization/KSerializer;) INVOKESPECIAL (Result$Companion, get$cachedSerializer, ()Lkotlinx/serialization/KSerializer;)
ARETURN ARETURN
@@ -357,6 +369,8 @@ public final class Result$OK$$serializer : java/lang/Object, kotlinx/serializati
DUP DUP
INVOKESPECIAL (Result$OK$$serializer, <init>, ()V) INVOKESPECIAL (Result$OK$$serializer, <init>, ()V)
PUTSTATIC (Result$OK$$serializer, INSTANCE, LResult$OK$$serializer;) PUTSTATIC (Result$OK$$serializer, INSTANCE, LResult$OK$$serializer;)
LABEL (L0)
LINENUMBER (14)
NEW (kotlinx/serialization/internal/PluginGeneratedSerialDescriptor) NEW (kotlinx/serialization/internal/PluginGeneratedSerialDescriptor)
DUP DUP
LDC (Result.OK) LDC (Result.OK)
@@ -385,6 +399,7 @@ public final class Result$OK$$serializer : java/lang/Object, kotlinx/serializati
public final kotlinx.serialization.KSerializer[] childSerializers() { public final kotlinx.serialization.KSerializer[] childSerializers() {
LABEL (L0) LABEL (L0)
LINENUMBER (14)
ICONST_1 ICONST_1
ANEWARRAY (kotlinx/serialization/KSerializer) ANEWARRAY (kotlinx/serialization/KSerializer)
ASTORE (1) ASTORE (1)
@@ -402,6 +417,8 @@ public final class Result$OK$$serializer : java/lang/Object, kotlinx/serializati
ALOAD (1) ALOAD (1)
LDC (decoder) LDC (decoder)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V) INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V)
LABEL (L1)
LINENUMBER (14)
GETSTATIC (Result$OK$$serializer, descriptor, Lkotlinx/serialization/descriptors/SerialDescriptor;) GETSTATIC (Result$OK$$serializer, descriptor, Lkotlinx/serialization/descriptors/SerialDescriptor;)
ASTORE (2) ASTORE (2)
ICONST_1 ICONST_1
@@ -416,7 +433,34 @@ public final class Result$OK$$serializer : java/lang/Object, kotlinx/serializati
ASTORE (7) ASTORE (7)
ALOAD (7) ALOAD (7)
INVOKEINTERFACE (kotlinx/serialization/encoding/CompositeDecoder, decodeSequentially, ()Z) INVOKEINTERFACE (kotlinx/serialization/encoding/CompositeDecoder, decodeSequentially, ()Z)
IFEQ (L1) IFEQ (L2)
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 (L3)
LABEL (L2)
ILOAD (3)
IFEQ (L3)
ALOAD (7)
ALOAD (2)
INVOKEINTERFACE (kotlinx/serialization/encoding/CompositeDecoder, decodeElementIndex, (Lkotlinx/serialization/descriptors/SerialDescriptor;)I)
ISTORE (4)
ILOAD (4)
TABLESWITCH
-1: L4
0: L5
default: L6
LABEL (L4)
ICONST_0
ISTORE (3)
GOTO (L2)
LABEL (L5)
ALOAD (7) ALOAD (7)
ALOAD (2) ALOAD (2)
ICONST_0 ICONST_0
@@ -427,40 +471,13 @@ public final class Result$OK$$serializer : java/lang/Object, kotlinx/serializati
IOR IOR
ISTORE (5) ISTORE (5)
GOTO (L2) GOTO (L2)
LABEL (L1) LABEL (L6)
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) NEW (kotlinx/serialization/UnknownFieldException)
DUP DUP
ILOAD (4) ILOAD (4)
INVOKESPECIAL (kotlinx/serialization/UnknownFieldException, <init>, (I)V) INVOKESPECIAL (kotlinx/serialization/UnknownFieldException, <init>, (I)V)
ATHROW ATHROW
LABEL (L2) LABEL (L3)
ALOAD (7) ALOAD (7)
ALOAD (2) ALOAD (2)
INVOKEINTERFACE (kotlinx/serialization/encoding/CompositeDecoder, endStructure, (Lkotlinx/serialization/descriptors/SerialDescriptor;)V) INVOKEINTERFACE (kotlinx/serialization/encoding/CompositeDecoder, endStructure, (Lkotlinx/serialization/descriptors/SerialDescriptor;)V)
@@ -471,11 +488,12 @@ public final class Result$OK$$serializer : java/lang/Object, kotlinx/serializati
ACONST_NULL ACONST_NULL
INVOKESPECIAL (Result$OK, <init>, (ILjava/lang/String;Lkotlinx/serialization/internal/SerializationConstructorMarker;)V) INVOKESPECIAL (Result$OK, <init>, (ILjava/lang/String;Lkotlinx/serialization/internal/SerializationConstructorMarker;)V)
ARETURN ARETURN
LABEL (L6) LABEL (L7)
} }
public java.lang.Object deserialize(kotlinx.serialization.encoding.Decoder decoder) { public java.lang.Object deserialize(kotlinx.serialization.encoding.Decoder decoder) {
LABEL (L0) LABEL (L0)
LINENUMBER (14)
ALOAD (0) ALOAD (0)
ALOAD (1) ALOAD (1)
INVOKEVIRTUAL (Result$OK$$serializer, deserialize, (Lkotlinx/serialization/encoding/Decoder;)LResult$OK;) INVOKEVIRTUAL (Result$OK$$serializer, deserialize, (Lkotlinx/serialization/encoding/Decoder;)LResult$OK;)
@@ -511,6 +529,7 @@ public final class Result$OK$Companion : java/lang/Object {
public final kotlinx.serialization.KSerializer serializer() { public final kotlinx.serialization.KSerializer serializer() {
LABEL (L0) LABEL (L0)
LINENUMBER (14)
GETSTATIC (Result$OK$$serializer, INSTANCE, LResult$OK$$serializer;) GETSTATIC (Result$OK$$serializer, INSTANCE, LResult$OK$$serializer;)
CHECKCAST (kotlinx/serialization/KSerializer) CHECKCAST (kotlinx/serialization/KSerializer)
ARETURN ARETURN
@@ -606,10 +625,14 @@ public abstract class Result : java/lang/Object, X {
ACONST_NULL ACONST_NULL
INVOKESPECIAL (Result$Companion, <init>, (Lkotlin/jvm/internal/DefaultConstructorMarker;)V) INVOKESPECIAL (Result$Companion, <init>, (Lkotlin/jvm/internal/DefaultConstructorMarker;)V)
PUTSTATIC (Result, Companion, LResult$Companion;) PUTSTATIC (Result, Companion, LResult$Companion;)
LABEL (L0)
LINENUMBER (12)
GETSTATIC (kotlin/LazyThreadSafetyMode, PUBLICATION, Lkotlin/LazyThreadSafetyMode;) GETSTATIC (kotlin/LazyThreadSafetyMode, PUBLICATION, Lkotlin/LazyThreadSafetyMode;)
INVOKEDYNAMIC (invoke, ()Lkotlin/jvm/functions/Function0;, java/lang/invoke/LambdaMetafactory.metafactory(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite; (6), ()Ljava/lang/Object;, Result._init_$_anonymous_()Lkotlinx/serialization/KSerializer; (6), ()Lkotlinx/serialization/KSerializer;) INVOKEDYNAMIC (invoke, ()Lkotlin/jvm/functions/Function0;, java/lang/invoke/LambdaMetafactory.metafactory(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite; (6), ()Ljava/lang/Object;, Result._init_$_anonymous_()Lkotlinx/serialization/KSerializer; (6), ()Lkotlinx/serialization/KSerializer;)
INVOKESTATIC (kotlin/LazyKt, lazy, (Lkotlin/LazyThreadSafetyMode;Lkotlin/jvm/functions/Function0;)Lkotlin/Lazy;) INVOKESTATIC (kotlin/LazyKt, lazy, (Lkotlin/LazyThreadSafetyMode;Lkotlin/jvm/functions/Function0;)Lkotlin/Lazy;)
PUTSTATIC (Result, $cachedSerializer$delegate, Lkotlin/Lazy;) PUTSTATIC (Result, $cachedSerializer$delegate, Lkotlin/Lazy;)
LABEL (L1)
LINENUMBER (16)
RETURN RETURN
} }
@@ -673,6 +696,7 @@ public final class X$Companion : java/lang/Object {
public final kotlinx.serialization.KSerializer serializer() { public final kotlinx.serialization.KSerializer serializer() {
LABEL (L0) LABEL (L0)
LINENUMBER (6)
NEW (kotlinx/serialization/SealedClassSerializer) NEW (kotlinx/serialization/SealedClassSerializer)
DUP DUP
LDC (X) LDC (X)
@@ -0,0 +1,20 @@
package test
import kotlinx.parcelize.Parcelize
import android.os.Parcelable
@Parcelize
class <!NOTHING_TO_OVERRIDE, NOTHING_TO_OVERRIDE, NO_PARCELABLE_SUPERTYPE!>Without<!>(val firstName: String, val secondName: String, val age: Int)
@Parcelize
class With(val firstName: String, val secondName: String, val age: Int) : Parcelable
interface MyParcelableIntf : Parcelable
abstract class MyParcelableCl : Parcelable
@Parcelize
class WithIntfSubtype(val firstName: String, val secondName: String, val age: Int) : MyParcelableIntf
@Parcelize
class WithClSubtype(val firstName: String, val secondName: String, val age: Int) : MyParcelableCl()
@@ -1,4 +1,3 @@
// FIR_IDENTICAL
package test package test
import kotlinx.parcelize.Parcelize import kotlinx.parcelize.Parcelize
@@ -0,0 +1,25 @@
package test
import kotlinx.parcelize.Parcelize
import android.os.Parcelable
@Parcelize
interface <!PARCELABLE_SHOULD_BE_CLASS!>Intf<!> : Parcelable
@Parcelize
object <!NOTHING_TO_OVERRIDE, NOTHING_TO_OVERRIDE, NO_PARCELABLE_SUPERTYPE!>Obj<!>
class A {
@Parcelize
companion <!NOTHING_TO_OVERRIDE, NOTHING_TO_OVERRIDE, NO_PARCELABLE_SUPERTYPE!>object<!> {
fun foo() {}
}
}
@Parcelize
enum class <!NOTHING_TO_OVERRIDE, NOTHING_TO_OVERRIDE, NO_PARCELABLE_SUPERTYPE!>Enum<!> {
WHITE, BLACK
}
@Parcelize
annotation class <!NOTHING_TO_OVERRIDE, NOTHING_TO_OVERRIDE, PARCELABLE_SHOULD_BE_CLASS!>Anno<!>
@@ -1,4 +1,3 @@
// FIR_IDENTICAL
package test package test
import kotlinx.parcelize.Parcelize import kotlinx.parcelize.Parcelize