[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
+159 -118
View File
@@ -8,6 +8,8 @@ public final class ListOfUsers$$serializer : java/lang/Object, kotlinx/serializa
DUP
INVOKESPECIAL (ListOfUsers$$serializer, <init>, ()V)
PUTSTATIC (ListOfUsers$$serializer, INSTANCE, LListOfUsers$$serializer;)
LABEL (L0)
LINENUMBER (12)
NEW (kotlinx/serialization/internal/PluginGeneratedSerialDescriptor)
DUP
LDC (ListOfUsers)
@@ -23,6 +25,8 @@ public final class ListOfUsers$$serializer : java/lang/Object, kotlinx/serializa
ALOAD (0)
CHECKCAST (kotlinx/serialization/descriptors/SerialDescriptor)
PUTSTATIC (ListOfUsers$$serializer, descriptor, Lkotlinx/serialization/descriptors/SerialDescriptor;)
LABEL (L1)
LINENUMBER (13)
RETURN
}
@@ -36,6 +40,7 @@ public final class ListOfUsers$$serializer : java/lang/Object, kotlinx/serializa
public final kotlinx.serialization.KSerializer[] childSerializers() {
LABEL (L0)
LINENUMBER (12)
INVOKESTATIC (ListOfUsers, access$get$childSerializers$cp, ()[Lkotlinx/serialization/KSerializer;)
ASTORE (1)
ICONST_1
@@ -57,6 +62,8 @@ public final class ListOfUsers$$serializer : java/lang/Object, kotlinx/serializa
ALOAD (1)
LDC (decoder)
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;)
ASTORE (2)
ICONST_1
@@ -73,7 +80,40 @@ public final class ListOfUsers$$serializer : java/lang/Object, kotlinx/serializa
ASTORE (8)
ALOAD (7)
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 (2)
ICONST_0
@@ -90,46 +130,13 @@ public final class ListOfUsers$$serializer : java/lang/Object, kotlinx/serializa
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;)
CHECKCAST (java/util/List)
ASTORE (6)
ILOAD (5)
ICONST_1
IOR
ISTORE (5)
GOTO (L1)
LABEL (L5)
LABEL (L6)
NEW (kotlinx/serialization/UnknownFieldException)
DUP
ILOAD (4)
INVOKESPECIAL (kotlinx/serialization/UnknownFieldException, <init>, (I)V)
ATHROW
LABEL (L2)
LABEL (L3)
ALOAD (7)
ALOAD (2)
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
INVOKESPECIAL (ListOfUsers, <init>, (ILjava/util/List;Lkotlinx/serialization/internal/SerializationConstructorMarker;)V)
ARETURN
LABEL (L6)
LABEL (L7)
}
public java.lang.Object deserialize(kotlinx.serialization.encoding.Decoder decoder) {
LABEL (L0)
LINENUMBER (12)
ALOAD (0)
ALOAD (1)
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)
LDC (value)
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;)
ASTORE (3)
ALOAD (1)
@@ -180,12 +190,15 @@ public final class ListOfUsers$$serializer : java/lang/Object, kotlinx/serializa
ALOAD (4)
ALOAD (3)
INVOKEINTERFACE (kotlinx/serialization/encoding/CompositeEncoder, endStructure, (Lkotlinx/serialization/descriptors/SerialDescriptor;)V)
LABEL (L2)
LINENUMBER (13)
RETURN
LABEL (L1)
LABEL (L3)
}
public void serialize(kotlinx.serialization.encoding.Encoder encoder, java.lang.Object value) {
LABEL (L0)
LINENUMBER (12)
ALOAD (0)
ALOAD (1)
ALOAD (2)
@@ -231,6 +244,8 @@ public final class ListOfUsers : java/lang/Object {
ACONST_NULL
INVOKESPECIAL (ListOfUsers$Companion, <init>, (Lkotlin/jvm/internal/DefaultConstructorMarker;)V)
PUTSTATIC (ListOfUsers, Companion, LListOfUsers$Companion;)
LABEL (L0)
LINENUMBER (12)
ICONST_1
ANEWARRAY (kotlinx/serialization/KSerializer)
ASTORE (0)
@@ -320,6 +335,8 @@ public final class OptionalUser$$serializer : java/lang/Object, kotlinx/serializ
DUP
INVOKESPECIAL (OptionalUser$$serializer, <init>, ()V)
PUTSTATIC (OptionalUser$$serializer, INSTANCE, LOptionalUser$$serializer;)
LABEL (L0)
LINENUMBER (9)
NEW (kotlinx/serialization/internal/PluginGeneratedSerialDescriptor)
DUP
LDC (OptionalUser)
@@ -335,6 +352,8 @@ public final class OptionalUser$$serializer : java/lang/Object, kotlinx/serializ
ALOAD (0)
CHECKCAST (kotlinx/serialization/descriptors/SerialDescriptor)
PUTSTATIC (OptionalUser$$serializer, descriptor, Lkotlinx/serialization/descriptors/SerialDescriptor;)
LABEL (L1)
LINENUMBER (10)
RETURN
}
@@ -348,6 +367,7 @@ public final class OptionalUser$$serializer : java/lang/Object, kotlinx/serializ
public final kotlinx.serialization.KSerializer[] childSerializers() {
LABEL (L0)
LINENUMBER (9)
ICONST_1
ANEWARRAY (kotlinx/serialization/KSerializer)
ASTORE (1)
@@ -365,6 +385,8 @@ public final class OptionalUser$$serializer : java/lang/Object, kotlinx/serializ
ALOAD (1)
LDC (decoder)
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;)
ASTORE (2)
ICONST_1
@@ -379,7 +401,38 @@ public final class OptionalUser$$serializer : java/lang/Object, kotlinx/serializ
ASTORE (7)
ALOAD (7)
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 (2)
ICONST_0
@@ -394,44 +447,13 @@ public final class OptionalUser$$serializer : java/lang/Object, kotlinx/serializ
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;)
CHECKCAST (User)
ASTORE (6)
ILOAD (5)
ICONST_1
IOR
ISTORE (5)
GOTO (L1)
LABEL (L5)
LABEL (L6)
NEW (kotlinx/serialization/UnknownFieldException)
DUP
ILOAD (4)
INVOKESPECIAL (kotlinx/serialization/UnknownFieldException, <init>, (I)V)
ATHROW
LABEL (L2)
LABEL (L3)
ALOAD (7)
ALOAD (2)
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
INVOKESPECIAL (OptionalUser, <init>, (ILUser;Lkotlinx/serialization/internal/SerializationConstructorMarker;)V)
ARETURN
LABEL (L6)
LABEL (L7)
}
public java.lang.Object deserialize(kotlinx.serialization.encoding.Decoder decoder) {
LABEL (L0)
LINENUMBER (9)
ALOAD (0)
ALOAD (1)
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)
LDC (value)
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;)
ASTORE (3)
ALOAD (1)
@@ -482,12 +507,15 @@ public final class OptionalUser$$serializer : java/lang/Object, kotlinx/serializ
ALOAD (4)
ALOAD (3)
INVOKEINTERFACE (kotlinx/serialization/encoding/CompositeEncoder, endStructure, (Lkotlinx/serialization/descriptors/SerialDescriptor;)V)
LABEL (L2)
LINENUMBER (10)
RETURN
LABEL (L1)
LABEL (L3)
}
public void serialize(kotlinx.serialization.encoding.Encoder encoder, java.lang.Object value) {
LABEL (L0)
LINENUMBER (9)
ALOAD (0)
ALOAD (1)
ALOAD (2)
@@ -677,6 +705,8 @@ public final class User$$serializer : java/lang/Object, kotlinx/serialization/in
DUP
INVOKESPECIAL (User$$serializer, <init>, ()V)
PUTSTATIC (User$$serializer, INSTANCE, LUser$$serializer;)
LABEL (L0)
LINENUMBER (6)
NEW (kotlinx/serialization/internal/PluginGeneratedSerialDescriptor)
DUP
LDC (User)
@@ -696,6 +726,8 @@ public final class User$$serializer : java/lang/Object, kotlinx/serialization/in
ALOAD (0)
CHECKCAST (kotlinx/serialization/descriptors/SerialDescriptor)
PUTSTATIC (User$$serializer, descriptor, Lkotlinx/serialization/descriptors/SerialDescriptor;)
LABEL (L1)
LINENUMBER (7)
RETURN
}
@@ -709,6 +741,7 @@ public final class User$$serializer : java/lang/Object, kotlinx/serialization/in
public final kotlinx.serialization.KSerializer[] childSerializers() {
LABEL (L0)
LINENUMBER (6)
ICONST_2
ANEWARRAY (kotlinx/serialization/KSerializer)
ASTORE (1)
@@ -730,6 +763,8 @@ public final class User$$serializer : java/lang/Object, kotlinx/serialization/in
ALOAD (1)
LDC (decoder)
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;)
ASTORE (2)
ICONST_1
@@ -746,7 +781,7 @@ public final class User$$serializer : java/lang/Object, kotlinx/serialization/in
ASTORE (8)
ALOAD (8)
INVOKEINTERFACE (kotlinx/serialization/encoding/CompositeDecoder, decodeSequentially, ()Z)
IFEQ (L1)
IFEQ (L2)
ALOAD (8)
ALOAD (2)
ICONST_0
@@ -756,6 +791,45 @@ public final class User$$serializer : java/lang/Object, kotlinx/serialization/in
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 (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 (2)
ICONST_1
@@ -766,52 +840,13 @@ public final class User$$serializer : java/lang/Object, kotlinx/serialization/in
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)
LABEL (L7)
NEW (kotlinx/serialization/UnknownFieldException)
DUP
ILOAD (4)
INVOKESPECIAL (kotlinx/serialization/UnknownFieldException, <init>, (I)V)
ATHROW
LABEL (L2)
LABEL (L3)
ALOAD (8)
ALOAD (2)
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
INVOKESPECIAL (User, <init>, (ILjava/lang/String;Ljava/lang/String;Lkotlinx/serialization/internal/SerializationConstructorMarker;)V)
ARETURN
LABEL (L7)
LABEL (L8)
}
public java.lang.Object deserialize(kotlinx.serialization.encoding.Decoder decoder) {
LABEL (L0)
LINENUMBER (6)
ALOAD (0)
ALOAD (1)
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)
LDC (value)
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;)
ASTORE (3)
ALOAD (1)
@@ -863,12 +901,15 @@ public final class User$$serializer : java/lang/Object, kotlinx/serialization/in
ALOAD (4)
ALOAD (3)
INVOKEINTERFACE (kotlinx/serialization/encoding/CompositeEncoder, endStructure, (Lkotlinx/serialization/descriptors/SerialDescriptor;)V)
LABEL (L2)
LINENUMBER (7)
RETURN
LABEL (L1)
LABEL (L3)
}
public void serialize(kotlinx.serialization.encoding.Encoder encoder, java.lang.Object value) {
LABEL (L0)
LINENUMBER (6)
ALOAD (0)
ALOAD (1)
ALOAD (2)