[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
symbolKind: LOCAL
typeParameters: []
getContainingFileSymbol: null
getContainingFileSymbol: KtFileSymbol(customSerlializable.kt)
getContainingJvmClassName: test.Serializer
getContainingModule: KtSourceModule "Sources of main"
deprecationStatus: null
@@ -56,7 +56,7 @@ KtFunctionSymbol:
annotationsList: []
ownTypeArguments: []
type: test/Serializer
getContainingFileSymbol: null
getContainingFileSymbol: KtFileSymbol(customSerlializable.kt)
getContainingJvmClassName: test.Serializer
getContainingModule: KtSourceModule "Sources of main"
deprecationStatus: null
@@ -109,7 +109,7 @@ KtFunctionSymbol:
type: test/SecondTarget
symbolKind: LOCAL
typeParameters: []
getContainingFileSymbol: null
getContainingFileSymbol: KtFileSymbol(customSerlializable.kt)
getContainingJvmClassName: test.Serializer
getContainingModule: KtSourceModule "Sources of main"
deprecationStatus: null
@@ -119,7 +119,7 @@ KtFunctionSymbol:
annotationsList: []
ownTypeArguments: []
type: test/Serializer
getContainingFileSymbol: null
getContainingFileSymbol: KtFileSymbol(customSerlializable.kt)
getContainingJvmClassName: test.Serializer
getContainingModule: KtSourceModule "Sources of main"
deprecationStatus: null
@@ -31,7 +31,7 @@ KtFunctionSymbol:
annotationsList: []
ownTypeArguments: []
type: test/WithGeneratedCompanion.Companion
getContainingFileSymbol: null
getContainingFileSymbol: KtFileSymbol(generatedCompanionWithFoo.kt)
getContainingJvmClassName: test.WithGeneratedCompanion.Companion
getContainingModule: KtSourceModule "Sources of main"
deprecationStatus: null
@@ -31,7 +31,7 @@ KtFunctionSymbol:
annotationsList: []
ownTypeArguments: []
type: test/MyClass
getContainingFileSymbol: null
getContainingFileSymbol: KtFileSymbol(nestedClassAndMaterializeMember.kt)
getContainingJvmClassName: test.MyClass
getContainingModule: KtSourceModule "Sources of main"
deprecationStatus: null
@@ -200,7 +200,7 @@ KtNamedClassOrObjectSymbol:
symbolKind: CLASS_MEMBER
typeParameters: []
visibility: Public
getContainingFileSymbol: null
getContainingFileSymbol: KtFileSymbol(nestedClassAndMaterializeMember.kt)
getContainingModule: KtSourceModule "Sources of main"
annotationApplicableTargets: null
deprecationStatus: null
@@ -23,7 +23,7 @@ KtNamedClassOrObjectSymbol:
symbolKind: CLASS_MEMBER
typeParameters: []
visibility: Public
getContainingFileSymbol: null
getContainingFileSymbol: KtFileSymbol(generatedCompanionWorksAsValue.kt)
getContainingModule: KtSourceModule "Sources of main"
annotationApplicableTargets: null
deprecationStatus: null
@@ -6,8 +6,10 @@
package org.jetbrains.kotlin.fir.plugin
import org.jetbrains.kotlin.GeneratedDeclarationKey
import org.jetbrains.kotlin.KtFakeSourceElementKind
import org.jetbrains.kotlin.descriptors.ClassKind
import org.jetbrains.kotlin.descriptors.Modality
import org.jetbrains.kotlin.fakeElement
import org.jetbrains.kotlin.fir.FirSession
import org.jetbrains.kotlin.fir.containingClassForLocalAttr
import org.jetbrains.kotlin.fir.declarations.FirRegularClass
@@ -68,6 +70,7 @@ public class ClassBuildingContext(
classKind = this@ClassBuildingContext.classKind
scopeProvider = session.kotlinScopeProvider
status = generateStatus()
source = owner?.source?.fakeElement(KtFakeSourceElementKind.PluginGenerated)
name = classId.shortClassName
symbol = FirRegularClassSymbol(classId)
@@ -6,8 +6,10 @@
package org.jetbrains.kotlin.fir.plugin
import org.jetbrains.kotlin.GeneratedDeclarationKey
import org.jetbrains.kotlin.KtFakeSourceElementKind
import org.jetbrains.kotlin.descriptors.Modality
import org.jetbrains.kotlin.descriptors.Visibility
import org.jetbrains.kotlin.fakeElement
import org.jetbrains.kotlin.fir.FirSession
import org.jetbrains.kotlin.fir.declarations.*
import org.jetbrains.kotlin.fir.declarations.builder.buildProperty
@@ -69,6 +71,8 @@ public class PropertyBuildingContext(
moduleData = session.moduleData
origin = key.origin
source = owner?.source?.fakeElement(KtFakeSourceElementKind.PluginGenerated)
symbol = FirPropertySymbol(callableId)
name = callableId.callableName
@@ -6,6 +6,8 @@
package org.jetbrains.kotlin.fir.plugin
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.declarations.FirResolvePhase
import org.jetbrains.kotlin.fir.declarations.FirSimpleFunction
@@ -57,6 +59,8 @@ public class SimpleFunctionBuildingContext(
moduleData = session.moduleData
origin = key.origin
source = owner?.source?.fakeElement(KtFakeSourceElementKind.PluginGenerated)
symbol = FirNamedFunctionSymbol(callableId)
name = callableId.callableName
@@ -309,6 +309,9 @@ sealed class KtFakeSourceElementKind(final override val shouldSkipErrorTypeRepor
// For it.functionFromAny() calls on a stub type
object CastToAnyForStubTypes : KtFakeSourceElementKind()
// For plugin-generated things
object PluginGenerated : KtFakeSourceElementKind()
}
sealed class AbstractKtSourceElement {
+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)
@@ -8,6 +8,8 @@ public final class Container$$serializer : java/lang/Object, kotlinx/serializati
DUP
INVOKESPECIAL (Container$$serializer, <init>, ()V)
PUTSTATIC (Container$$serializer, INSTANCE, LContainer$$serializer;)
LABEL (L0)
LINENUMBER (18)
NEW (kotlinx/serialization/internal/PluginGeneratedSerialDescriptor)
DUP
LDC (Container)
@@ -23,6 +25,8 @@ public final class Container$$serializer : java/lang/Object, kotlinx/serializati
ALOAD (0)
CHECKCAST (kotlinx/serialization/descriptors/SerialDescriptor)
PUTSTATIC (Container$$serializer, descriptor, Lkotlinx/serialization/descriptors/SerialDescriptor;)
LABEL (L1)
LINENUMBER (19)
RETURN
}
@@ -36,6 +40,7 @@ public final class Container$$serializer : java/lang/Object, kotlinx/serializati
public final kotlinx.serialization.KSerializer[] childSerializers() {
LABEL (L0)
LINENUMBER (18)
INVOKESTATIC (Container, access$get$childSerializers$cp, ()[Lkotlinx/serialization/KSerializer;)
ASTORE (1)
ICONST_1
@@ -57,6 +62,8 @@ public final class Container$$serializer : java/lang/Object, kotlinx/serializati
ALOAD (1)
LDC (decoder)
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;)
ASTORE (2)
ICONST_1
@@ -73,7 +80,40 @@ public final class Container$$serializer : java/lang/Object, kotlinx/serializati
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 (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 (2)
ICONST_0
@@ -90,46 +130,13 @@ public final class Container$$serializer : java/lang/Object, kotlinx/serializati
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 (Result)
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 Container$$serializer : java/lang/Object, kotlinx/serializati
ACONST_NULL
INVOKESPECIAL (Container, <init>, (ILResult;Lkotlinx/serialization/internal/SerializationConstructorMarker;)V)
ARETURN
LABEL (L6)
LABEL (L7)
}
public java.lang.Object deserialize(kotlinx.serialization.encoding.Decoder decoder) {
LABEL (L0)
LINENUMBER (18)
ALOAD (0)
ALOAD (1)
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() {
LABEL (L0)
LINENUMBER (18)
GETSTATIC (Container$$serializer, INSTANCE, LContainer$$serializer;)
CHECKCAST (kotlinx/serialization/KSerializer)
ARETURN
@@ -200,6 +209,8 @@ public final class Container : java/lang/Object {
ACONST_NULL
INVOKESPECIAL (Container$Companion, <init>, (Lkotlin/jvm/internal/DefaultConstructorMarker;)V)
PUTSTATIC (Container, Companion, LContainer$Companion;)
LABEL (L0)
LINENUMBER (18)
ICONST_1
ANEWARRAY (kotlinx/serialization/KSerializer)
ASTORE (0)
@@ -297,6 +308,7 @@ public final class Result$Companion : java/lang/Object {
public final kotlinx.serialization.KSerializer serializer() {
LABEL (L0)
LINENUMBER (12)
ALOAD (0)
INVOKESPECIAL (Result$Companion, get$cachedSerializer, ()Lkotlinx/serialization/KSerializer;)
ARETURN
@@ -357,6 +369,8 @@ public final class Result$OK$$serializer : java/lang/Object, kotlinx/serializati
DUP
INVOKESPECIAL (Result$OK$$serializer, <init>, ()V)
PUTSTATIC (Result$OK$$serializer, INSTANCE, LResult$OK$$serializer;)
LABEL (L0)
LINENUMBER (14)
NEW (kotlinx/serialization/internal/PluginGeneratedSerialDescriptor)
DUP
LDC (Result.OK)
@@ -385,6 +399,7 @@ public final class Result$OK$$serializer : java/lang/Object, kotlinx/serializati
public final kotlinx.serialization.KSerializer[] childSerializers() {
LABEL (L0)
LINENUMBER (14)
ICONST_1
ANEWARRAY (kotlinx/serialization/KSerializer)
ASTORE (1)
@@ -402,6 +417,8 @@ public final class Result$OK$$serializer : java/lang/Object, kotlinx/serializati
ALOAD (1)
LDC (decoder)
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;)
ASTORE (2)
ICONST_1
@@ -416,7 +433,34 @@ public final class Result$OK$$serializer : java/lang/Object, kotlinx/serializati
ASTORE (7)
ALOAD (7)
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 (2)
ICONST_0
@@ -427,40 +471,13 @@ public final class Result$OK$$serializer : java/lang/Object, kotlinx/serializati
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)
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)
@@ -471,11 +488,12 @@ public final class Result$OK$$serializer : java/lang/Object, kotlinx/serializati
ACONST_NULL
INVOKESPECIAL (Result$OK, <init>, (ILjava/lang/String;Lkotlinx/serialization/internal/SerializationConstructorMarker;)V)
ARETURN
LABEL (L6)
LABEL (L7)
}
public java.lang.Object deserialize(kotlinx.serialization.encoding.Decoder decoder) {
LABEL (L0)
LINENUMBER (14)
ALOAD (0)
ALOAD (1)
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() {
LABEL (L0)
LINENUMBER (14)
GETSTATIC (Result$OK$$serializer, INSTANCE, LResult$OK$$serializer;)
CHECKCAST (kotlinx/serialization/KSerializer)
ARETURN
@@ -606,10 +625,14 @@ public abstract class Result : java/lang/Object, X {
ACONST_NULL
INVOKESPECIAL (Result$Companion, <init>, (Lkotlin/jvm/internal/DefaultConstructorMarker;)V)
PUTSTATIC (Result, Companion, LResult$Companion;)
LABEL (L0)
LINENUMBER (12)
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;)
INVOKESTATIC (kotlin/LazyKt, lazy, (Lkotlin/LazyThreadSafetyMode;Lkotlin/jvm/functions/Function0;)Lkotlin/Lazy;)
PUTSTATIC (Result, $cachedSerializer$delegate, Lkotlin/Lazy;)
LABEL (L1)
LINENUMBER (16)
RETURN
}
@@ -673,6 +696,7 @@ public final class X$Companion : java/lang/Object {
public final kotlinx.serialization.KSerializer serializer() {
LABEL (L0)
LINENUMBER (6)
NEW (kotlinx/serialization/SealedClassSerializer)
DUP
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
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
import kotlinx.parcelize.Parcelize