From 5d6e2b57a7a36ad179ebca89bd3be2fb74bff898 Mon Sep 17 00:00:00 2001 From: Ilya Chernikov Date: Fri, 25 Mar 2022 18:49:14 +0100 Subject: [PATCH] Sort sealed class inheritors to ensure reproducible builds with IC without this sorting the inheritors field in the metadata may depend on whether some inheritors are compiled in the IC round or not. --- .../fir/declarations/SealedClassInheritors.kt | 2 +- .../codegen/box/smartCasts/kt44814.fir.ir.txt | 6 +- .../codegen/box/smartCasts/kt44814.ir.txt | 6 +- .../sealedJavaClassViaKotlinReflection.kt | 2 +- .../sealedJavaInterfaceViaKotlinReflection.kt | 2 +- .../ir/irText/classes/sealedClasses.ir.txt | 2 +- .../ir/irText/firProblems/ArrayMap.fir.ir.txt | 2 +- .../ir/irText/firProblems/ArrayMap.ir.txt | 2 +- .../descriptors/LazyJavaClassDescriptor.kt | 2 +- .../resolve/SealedClassInheritorsProvider.kt | 3 +- .../testData/codegen/Sealed.ir.txt | 28 +++---- .../testData/codegen/Sealed.txt | 84 +++++++++---------- 12 files changed, 71 insertions(+), 70 deletions(-) diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/SealedClassInheritors.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/SealedClassInheritors.kt index 163cc27b45e..d437dc49f9f 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/SealedClassInheritors.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/SealedClassInheritors.kt @@ -36,7 +36,7 @@ fun FirRegularClass.getSealedClassInheritors(session: FirSession): List @OptIn(SealedClassInheritorsProviderInternals::class) fun FirRegularClass.setSealedClassInheritors(inheritors: List) { require(this.isSealed) - sealedInheritorsAttr = inheritors + sealedInheritorsAttr = inheritors.sortedBy { it.asFqNameString() } } private object SealedClassInheritorsKey : FirDeclarationDataKey() diff --git a/compiler/testData/codegen/box/smartCasts/kt44814.fir.ir.txt b/compiler/testData/codegen/box/smartCasts/kt44814.fir.ir.txt index 0f00a913d19..f2900e80376 100644 --- a/compiler/testData/codegen/box/smartCasts/kt44814.fir.ir.txt +++ b/compiler/testData/codegen/box/smartCasts/kt44814.fir.ir.txt @@ -20,8 +20,8 @@ FILE fqName: fileName:/kt44814.kt $this: VALUE_PARAMETER name: type:kotlin.Any CLASS CLASS name:FirSourceElement modality:SEALED visibility:public superTypes:[kotlin.Any] sealedSubclasses: - CLASS CLASS name:FirPsiSourceElement modality:FINAL visibility:public superTypes:[.FirSourceElement] CLASS CLASS name:FirLightSourceElement modality:FINAL visibility:public superTypes:[.FirSourceElement] + CLASS CLASS name:FirPsiSourceElement modality:FINAL visibility:public superTypes:[.FirSourceElement] $this: VALUE_PARAMETER INSTANCE_RECEIVER name: type:.FirSourceElement CONSTRUCTOR visibility:protected <> () returnType:.FirSourceElement [primary] BLOCK_BODY @@ -372,8 +372,8 @@ FILE fqName: fileName:/kt44814.kt $this: VALUE_PARAMETER name: type:kotlin.Any CLASS CLASS name:FirModifier modality:SEALED visibility:internal superTypes:[kotlin.Any] sealedSubclasses: - CLASS CLASS name:FirPsiModifier modality:FINAL visibility:public superTypes:[.FirModifier<.ASTNode>] CLASS CLASS name:FirLightModifier modality:FINAL visibility:public superTypes:[.FirModifier<.LighterASTNode>] + CLASS CLASS name:FirPsiModifier modality:FINAL visibility:public superTypes:[.FirModifier<.ASTNode>] $this: VALUE_PARAMETER INSTANCE_RECEIVER name: type:.FirModifier.FirModifier> TYPE_PARAMETER name:Node index:0 variance: superTypes:[kotlin.Any] reified:false CONSTRUCTOR visibility:protected <> (node:Node of .FirModifier, token:.KtModifierKeywordToken) returnType:.FirModifier.FirModifier> [primary] @@ -511,8 +511,8 @@ FILE fqName: fileName:/kt44814.kt $this: VALUE_PARAMETER name: type:kotlin.Any CLASS CLASS name:FirModifierList modality:SEALED visibility:internal superTypes:[kotlin.Any] sealedSubclasses: - CLASS CLASS name:FirPsiModifierList modality:FINAL visibility:public superTypes:[.FirModifierList] CLASS CLASS name:FirLightModifierList modality:FINAL visibility:public superTypes:[.FirModifierList] + CLASS CLASS name:FirPsiModifierList modality:FINAL visibility:public superTypes:[.FirModifierList] $this: VALUE_PARAMETER INSTANCE_RECEIVER name: type:.FirModifierList CONSTRUCTOR visibility:protected <> () returnType:.FirModifierList [primary] BLOCK_BODY diff --git a/compiler/testData/codegen/box/smartCasts/kt44814.ir.txt b/compiler/testData/codegen/box/smartCasts/kt44814.ir.txt index 349ebd9ffe7..311a8752f66 100644 --- a/compiler/testData/codegen/box/smartCasts/kt44814.ir.txt +++ b/compiler/testData/codegen/box/smartCasts/kt44814.ir.txt @@ -20,8 +20,8 @@ FILE fqName: fileName:/kt44814.kt $this: VALUE_PARAMETER name: type:kotlin.Any CLASS CLASS name:FirSourceElement modality:SEALED visibility:public superTypes:[kotlin.Any] sealedSubclasses: - CLASS CLASS name:FirPsiSourceElement modality:FINAL visibility:public superTypes:[.FirSourceElement] CLASS CLASS name:FirLightSourceElement modality:FINAL visibility:public superTypes:[.FirSourceElement] + CLASS CLASS name:FirPsiSourceElement modality:FINAL visibility:public superTypes:[.FirSourceElement] $this: VALUE_PARAMETER INSTANCE_RECEIVER name: type:.FirSourceElement CONSTRUCTOR visibility:protected <> () returnType:.FirSourceElement [primary] BLOCK_BODY @@ -372,8 +372,8 @@ FILE fqName: fileName:/kt44814.kt $this: VALUE_PARAMETER name: type:kotlin.Any CLASS CLASS name:FirModifier modality:SEALED visibility:internal superTypes:[kotlin.Any] sealedSubclasses: - CLASS CLASS name:FirPsiModifier modality:FINAL visibility:public superTypes:[.FirModifier<.ASTNode>] CLASS CLASS name:FirLightModifier modality:FINAL visibility:public superTypes:[.FirModifier<.LighterASTNode>] + CLASS CLASS name:FirPsiModifier modality:FINAL visibility:public superTypes:[.FirModifier<.ASTNode>] $this: VALUE_PARAMETER INSTANCE_RECEIVER name: type:.FirModifier.FirModifier> TYPE_PARAMETER name:Node index:0 variance: superTypes:[kotlin.Any] reified:false CONSTRUCTOR visibility:protected <> (node:Node of .FirModifier, token:.KtModifierKeywordToken) returnType:.FirModifier.FirModifier> [primary] @@ -511,8 +511,8 @@ FILE fqName: fileName:/kt44814.kt $this: VALUE_PARAMETER name: type:kotlin.Any CLASS CLASS name:FirModifierList modality:SEALED visibility:internal superTypes:[kotlin.Any] sealedSubclasses: - CLASS CLASS name:FirPsiModifierList modality:FINAL visibility:public superTypes:[.FirModifierList] CLASS CLASS name:FirLightModifierList modality:FINAL visibility:public superTypes:[.FirModifierList] + CLASS CLASS name:FirPsiModifierList modality:FINAL visibility:public superTypes:[.FirModifierList] $this: VALUE_PARAMETER INSTANCE_RECEIVER name: type:.FirModifierList CONSTRUCTOR visibility:protected <> () returnType:.FirModifierList [primary] BLOCK_BODY diff --git a/compiler/testData/codegen/boxModernJdk/testsWithJava17/sealed/sealedJavaClassViaKotlinReflection.kt b/compiler/testData/codegen/boxModernJdk/testsWithJava17/sealed/sealedJavaClassViaKotlinReflection.kt index 9c4dd79674d..3b2565d7d2a 100644 --- a/compiler/testData/codegen/boxModernJdk/testsWithJava17/sealed/sealedJavaClassViaKotlinReflection.kt +++ b/compiler/testData/codegen/boxModernJdk/testsWithJava17/sealed/sealedJavaClassViaKotlinReflection.kt @@ -14,7 +14,7 @@ fun box(): String { val klass = Base::class if (!klass.isSealed) return "Error: Base is not sealed" if (klass.isAbstract) return "Error: Base is not abstract" - return klass.sealedSubclasses + return klass.sealedSubclasses.asReversed() .joinToString("") { it.simpleName ?: "_No name provided_" } .takeIf { it.isNotBlank() } ?: "_No sealed subclasses found_" diff --git a/compiler/testData/codegen/boxModernJdk/testsWithJava17/sealed/sealedJavaInterfaceViaKotlinReflection.kt b/compiler/testData/codegen/boxModernJdk/testsWithJava17/sealed/sealedJavaInterfaceViaKotlinReflection.kt index a8e92e00acc..435c72a6129 100644 --- a/compiler/testData/codegen/boxModernJdk/testsWithJava17/sealed/sealedJavaInterfaceViaKotlinReflection.kt +++ b/compiler/testData/codegen/boxModernJdk/testsWithJava17/sealed/sealedJavaInterfaceViaKotlinReflection.kt @@ -14,7 +14,7 @@ fun box(): String { val klass = Base::class if (!klass.isSealed) return "Error: Base is not sealed" if (klass.isAbstract) return "Error: Base is abstract" - return klass.sealedSubclasses + return klass.sealedSubclasses.asReversed() .joinToString("") { it.simpleName ?: "_No name provided_" } .takeIf { it.isNotBlank() } ?: "_No sealed subclasses found_" diff --git a/compiler/testData/ir/irText/classes/sealedClasses.ir.txt b/compiler/testData/ir/irText/classes/sealedClasses.ir.txt index 3a2b290b94f..3cea776d108 100644 --- a/compiler/testData/ir/irText/classes/sealedClasses.ir.txt +++ b/compiler/testData/ir/irText/classes/sealedClasses.ir.txt @@ -2,8 +2,8 @@ FILE fqName: fileName:/sealedClasses.kt CLASS CLASS name:Expr modality:SEALED visibility:public superTypes:[kotlin.Any] sealedSubclasses: CLASS CLASS name:Const modality:FINAL visibility:public superTypes:[.Expr] - CLASS CLASS name:Sum modality:FINAL visibility:public superTypes:[.Expr] CLASS OBJECT name:NotANumber modality:FINAL visibility:public superTypes:[.Expr] + CLASS CLASS name:Sum modality:FINAL visibility:public superTypes:[.Expr] $this: VALUE_PARAMETER INSTANCE_RECEIVER name: type:.Expr CONSTRUCTOR visibility:protected <> () returnType:.Expr [primary] BLOCK_BODY diff --git a/compiler/testData/ir/irText/firProblems/ArrayMap.fir.ir.txt b/compiler/testData/ir/irText/firProblems/ArrayMap.fir.ir.txt index 26241b8cdd1..71669f2df05 100644 --- a/compiler/testData/ir/irText/firProblems/ArrayMap.fir.ir.txt +++ b/compiler/testData/ir/irText/firProblems/ArrayMap.fir.ir.txt @@ -1,9 +1,9 @@ FILE fqName: fileName:/ArrayMap.kt CLASS CLASS name:ArrayMap modality:SEALED visibility:public superTypes:[kotlin.collections.Iterable.ArrayMap>] sealedSubclasses: + CLASS CLASS name:ArrayMapImpl modality:FINAL visibility:internal superTypes:[.ArrayMap.ArrayMapImpl>] CLASS OBJECT name:EmptyArrayMap modality:FINAL visibility:internal superTypes:[.ArrayMap] CLASS CLASS name:OneElementArrayMap modality:FINAL visibility:internal superTypes:[.ArrayMap.OneElementArrayMap>] - CLASS CLASS name:ArrayMapImpl modality:FINAL visibility:internal superTypes:[.ArrayMap.ArrayMapImpl>] $this: VALUE_PARAMETER INSTANCE_RECEIVER name: type:.ArrayMap.ArrayMap> TYPE_PARAMETER name:T index:0 variance: superTypes:[kotlin.Any] reified:false CONSTRUCTOR visibility:protected <> () returnType:.ArrayMap.ArrayMap> [primary] diff --git a/compiler/testData/ir/irText/firProblems/ArrayMap.ir.txt b/compiler/testData/ir/irText/firProblems/ArrayMap.ir.txt index 86e7d4f654b..25e9ef74934 100644 --- a/compiler/testData/ir/irText/firProblems/ArrayMap.ir.txt +++ b/compiler/testData/ir/irText/firProblems/ArrayMap.ir.txt @@ -1,9 +1,9 @@ FILE fqName: fileName:/ArrayMap.kt CLASS CLASS name:ArrayMap modality:SEALED visibility:public superTypes:[kotlin.collections.Iterable.ArrayMap>] sealedSubclasses: + CLASS CLASS name:ArrayMapImpl modality:FINAL visibility:internal superTypes:[.ArrayMap.ArrayMapImpl>] CLASS OBJECT name:EmptyArrayMap modality:FINAL visibility:internal superTypes:[.ArrayMap] CLASS CLASS name:OneElementArrayMap modality:FINAL visibility:internal superTypes:[.ArrayMap.OneElementArrayMap>] - CLASS CLASS name:ArrayMapImpl modality:FINAL visibility:internal superTypes:[.ArrayMap.ArrayMapImpl>] $this: VALUE_PARAMETER INSTANCE_RECEIVER name: type:.ArrayMap.ArrayMap> TYPE_PARAMETER name:T index:0 variance: superTypes:[kotlin.Any] reified:false CONSTRUCTOR visibility:protected <> () returnType:.ArrayMap.ArrayMap> [primary] diff --git a/core/descriptors.jvm/src/org/jetbrains/kotlin/load/java/lazy/descriptors/LazyJavaClassDescriptor.kt b/core/descriptors.jvm/src/org/jetbrains/kotlin/load/java/lazy/descriptors/LazyJavaClassDescriptor.kt index 71cf9ff72f7..57fe4f315d4 100644 --- a/core/descriptors.jvm/src/org/jetbrains/kotlin/load/java/lazy/descriptors/LazyJavaClassDescriptor.kt +++ b/core/descriptors.jvm/src/org/jetbrains/kotlin/load/java/lazy/descriptors/LazyJavaClassDescriptor.kt @@ -191,7 +191,7 @@ class LazyJavaClassDescriptor( val attributes = TypeUsage.COMMON.toAttributes() jClass.permittedTypes.mapNotNull { c.typeResolver.transformJavaType(it, attributes).constructor.declarationDescriptor as? ClassDescriptor - } + }.sortedBy { it.fqNameSafe.asString() } } else { emptyList() } diff --git a/core/descriptors/src/org/jetbrains/kotlin/resolve/SealedClassInheritorsProvider.kt b/core/descriptors/src/org/jetbrains/kotlin/resolve/SealedClassInheritorsProvider.kt index 9cb3afccadc..5e5f0087b03 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/resolve/SealedClassInheritorsProvider.kt +++ b/core/descriptors/src/org/jetbrains/kotlin/resolve/SealedClassInheritorsProvider.kt @@ -10,6 +10,7 @@ import org.jetbrains.kotlin.descriptors.Modality import org.jetbrains.kotlin.descriptors.PackageFragmentDescriptor import org.jetbrains.kotlin.descriptors.TypeAliasDescriptor import org.jetbrains.kotlin.incremental.components.NoLookupLocation +import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameSafe import org.jetbrains.kotlin.resolve.descriptorUtil.parents import org.jetbrains.kotlin.resolve.scopes.DescriptorKindFilter import org.jetbrains.kotlin.resolve.scopes.MemberScope @@ -78,7 +79,7 @@ object CliSealedClassInheritorsProvider : SealedClassInheritorsProvider() { ) } collectSubclasses(sealedClass.unsubstitutedInnerClassesScope, collectNested = true) - return result + return result.sortedBy { it.fqNameSafe.asString() } } } diff --git a/plugins/kotlin-serialization/kotlin-serialization-compiler/testData/codegen/Sealed.ir.txt b/plugins/kotlin-serialization/kotlin-serialization-compiler/testData/codegen/Sealed.ir.txt index a3e59ec592a..077967a028e 100644 --- a/plugins/kotlin-serialization/kotlin-serialization-compiler/testData/codegen/Sealed.ir.txt +++ b/plugins/kotlin-serialization/kotlin-serialization-compiler/testData/codegen/Sealed.ir.txt @@ -308,12 +308,12 @@ final class Result$Companion$$cachedSerializer$delegate$1 : kotlin/jvm/internal/ ASTORE (1) ALOAD (1) ICONST_0 - LDC (LResult$OK;) + LDC (LResult$Err;) INVOKESTATIC (kotlin/jvm/internal/Reflection, getOrCreateKotlinClass, (Ljava/lang/Class;)Lkotlin/reflect/KClass;) AASTORE ALOAD (1) ICONST_1 - LDC (LResult$Err;) + LDC (LResult$OK;) INVOKESTATIC (kotlin/jvm/internal/Reflection, getOrCreateKotlinClass, (Ljava/lang/Class;)Lkotlin/reflect/KClass;) AASTORE ALOAD (1) @@ -322,11 +322,6 @@ final class Result$Companion$$cachedSerializer$delegate$1 : kotlin/jvm/internal/ ASTORE (1) ALOAD (1) ICONST_0 - GETSTATIC (Result$OK$$serializer, INSTANCE, LResult$OK$$serializer;) - CHECKCAST (kotlinx/serialization/KSerializer) - AASTORE - ALOAD (1) - ICONST_1 NEW (kotlinx/serialization/internal/ObjectSerializer) DUP LDC (Result.Err) @@ -335,6 +330,11 @@ final class Result$Companion$$cachedSerializer$delegate$1 : kotlin/jvm/internal/ CHECKCAST (kotlinx/serialization/KSerializer) AASTORE ALOAD (1) + ICONST_1 + GETSTATIC (Result$OK$$serializer, INSTANCE, LResult$OK$$serializer;) + CHECKCAST (kotlinx/serialization/KSerializer) + AASTORE + ALOAD (1) INVOKESPECIAL (kotlinx/serialization/SealedClassSerializer, , (Ljava/lang/String;Lkotlin/reflect/KClass;[Lkotlin/reflect/KClass;[Lkotlinx/serialization/KSerializer;)V) CHECKCAST (kotlinx/serialization/KSerializer) ARETURN @@ -841,12 +841,12 @@ public final class X$Companion : java/lang/Object { ASTORE (1) ALOAD (1) ICONST_0 - LDC (LResult$OK;) + LDC (LResult$Err;) INVOKESTATIC (kotlin/jvm/internal/Reflection, getOrCreateKotlinClass, (Ljava/lang/Class;)Lkotlin/reflect/KClass;) AASTORE ALOAD (1) ICONST_1 - LDC (LResult$Err;) + LDC (LResult$OK;) INVOKESTATIC (kotlin/jvm/internal/Reflection, getOrCreateKotlinClass, (Ljava/lang/Class;)Lkotlin/reflect/KClass;) AASTORE ALOAD (1) @@ -855,11 +855,6 @@ public final class X$Companion : java/lang/Object { ASTORE (1) ALOAD (1) ICONST_0 - GETSTATIC (Result$OK$$serializer, INSTANCE, LResult$OK$$serializer;) - CHECKCAST (kotlinx/serialization/KSerializer) - AASTORE - ALOAD (1) - ICONST_1 NEW (kotlinx/serialization/internal/ObjectSerializer) DUP LDC (Result.Err) @@ -868,6 +863,11 @@ public final class X$Companion : java/lang/Object { CHECKCAST (kotlinx/serialization/KSerializer) AASTORE ALOAD (1) + ICONST_1 + GETSTATIC (Result$OK$$serializer, INSTANCE, LResult$OK$$serializer;) + CHECKCAST (kotlinx/serialization/KSerializer) + AASTORE + ALOAD (1) INVOKESPECIAL (kotlinx/serialization/SealedClassSerializer, , (Ljava/lang/String;Lkotlin/reflect/KClass;[Lkotlin/reflect/KClass;[Lkotlinx/serialization/KSerializer;)V) CHECKCAST (kotlinx/serialization/KSerializer) ARETURN diff --git a/plugins/kotlin-serialization/kotlin-serialization-compiler/testData/codegen/Sealed.txt b/plugins/kotlin-serialization/kotlin-serialization-compiler/testData/codegen/Sealed.txt index c9304a4a143..feabd89814c 100644 --- a/plugins/kotlin-serialization/kotlin-serialization-compiler/testData/codegen/Sealed.txt +++ b/plugins/kotlin-serialization/kotlin-serialization-compiler/testData/codegen/Sealed.txt @@ -53,29 +53,29 @@ public final class Container$$serializer : java/lang/Object, kotlinx/serializati ANEWARRAY (kotlin/reflect/KClass) DUP ICONST_0 - LDC (LResult$OK;) + LDC (LResult$Err;) INVOKESTATIC (kotlin/jvm/internal/Reflection, getOrCreateKotlinClass, (Ljava/lang/Class;)Lkotlin/reflect/KClass;) AASTORE DUP ICONST_1 - LDC (LResult$Err;) + LDC (LResult$OK;) INVOKESTATIC (kotlin/jvm/internal/Reflection, getOrCreateKotlinClass, (Ljava/lang/Class;)Lkotlin/reflect/KClass;) AASTORE ICONST_2 ANEWARRAY (kotlinx/serialization/KSerializer) DUP ICONST_0 - GETSTATIC (Result$OK$$serializer, INSTANCE, LResult$OK$$serializer;) - CHECKCAST (kotlinx/serialization/KSerializer) - AASTORE - DUP - ICONST_1 NEW (kotlinx/serialization/internal/ObjectSerializer) DUP LDC (Result.Err) GETSTATIC (Result$Err, INSTANCE, LResult$Err;) INVOKESPECIAL (kotlinx/serialization/internal/ObjectSerializer, , (Ljava/lang/String;Ljava/lang/Object;)V) AASTORE + DUP + ICONST_1 + GETSTATIC (Result$OK$$serializer, INSTANCE, LResult$OK$$serializer;) + CHECKCAST (kotlinx/serialization/KSerializer) + AASTORE INVOKESPECIAL (kotlinx/serialization/SealedClassSerializer, , (Ljava/lang/String;Lkotlin/reflect/KClass;[Lkotlin/reflect/KClass;[Lkotlinx/serialization/KSerializer;)V) AASTORE ARETURN @@ -112,29 +112,29 @@ public final class Container$$serializer : java/lang/Object, kotlinx/serializati ANEWARRAY (kotlin/reflect/KClass) DUP ICONST_0 - LDC (LResult$OK;) + LDC (LResult$Err;) INVOKESTATIC (kotlin/jvm/internal/Reflection, getOrCreateKotlinClass, (Ljava/lang/Class;)Lkotlin/reflect/KClass;) AASTORE DUP ICONST_1 - LDC (LResult$Err;) + LDC (LResult$OK;) INVOKESTATIC (kotlin/jvm/internal/Reflection, getOrCreateKotlinClass, (Ljava/lang/Class;)Lkotlin/reflect/KClass;) AASTORE ICONST_2 ANEWARRAY (kotlinx/serialization/KSerializer) DUP ICONST_0 - GETSTATIC (Result$OK$$serializer, INSTANCE, LResult$OK$$serializer;) - CHECKCAST (kotlinx/serialization/KSerializer) - AASTORE - DUP - ICONST_1 NEW (kotlinx/serialization/internal/ObjectSerializer) DUP LDC (Result.Err) GETSTATIC (Result$Err, INSTANCE, LResult$Err;) INVOKESPECIAL (kotlinx/serialization/internal/ObjectSerializer, , (Ljava/lang/String;Ljava/lang/Object;)V) AASTORE + DUP + ICONST_1 + GETSTATIC (Result$OK$$serializer, INSTANCE, LResult$OK$$serializer;) + CHECKCAST (kotlinx/serialization/KSerializer) + AASTORE INVOKESPECIAL (kotlinx/serialization/SealedClassSerializer, , (Ljava/lang/String;Lkotlin/reflect/KClass;[Lkotlin/reflect/KClass;[Lkotlinx/serialization/KSerializer;)V) ALOAD (5) INVOKEINTERFACE (kotlinx/serialization/encoding/CompositeDecoder, decodeSerializableElement, (Lkotlinx/serialization/descriptors/SerialDescriptor;ILkotlinx/serialization/DeserializationStrategy;Ljava/lang/Object;)Ljava/lang/Object;) @@ -166,29 +166,29 @@ public final class Container$$serializer : java/lang/Object, kotlinx/serializati ANEWARRAY (kotlin/reflect/KClass) DUP ICONST_0 - LDC (LResult$OK;) + LDC (LResult$Err;) INVOKESTATIC (kotlin/jvm/internal/Reflection, getOrCreateKotlinClass, (Ljava/lang/Class;)Lkotlin/reflect/KClass;) AASTORE DUP ICONST_1 - LDC (LResult$Err;) + LDC (LResult$OK;) INVOKESTATIC (kotlin/jvm/internal/Reflection, getOrCreateKotlinClass, (Ljava/lang/Class;)Lkotlin/reflect/KClass;) AASTORE ICONST_2 ANEWARRAY (kotlinx/serialization/KSerializer) DUP ICONST_0 - GETSTATIC (Result$OK$$serializer, INSTANCE, LResult$OK$$serializer;) - CHECKCAST (kotlinx/serialization/KSerializer) - AASTORE - DUP - ICONST_1 NEW (kotlinx/serialization/internal/ObjectSerializer) DUP LDC (Result.Err) GETSTATIC (Result$Err, INSTANCE, LResult$Err;) INVOKESPECIAL (kotlinx/serialization/internal/ObjectSerializer, , (Ljava/lang/String;Ljava/lang/Object;)V) AASTORE + DUP + ICONST_1 + GETSTATIC (Result$OK$$serializer, INSTANCE, LResult$OK$$serializer;) + CHECKCAST (kotlinx/serialization/KSerializer) + AASTORE INVOKESPECIAL (kotlinx/serialization/SealedClassSerializer, , (Ljava/lang/String;Lkotlin/reflect/KClass;[Lkotlin/reflect/KClass;[Lkotlinx/serialization/KSerializer;)V) ALOAD (5) INVOKEINTERFACE (kotlinx/serialization/encoding/CompositeDecoder, decodeSerializableElement, (Lkotlinx/serialization/descriptors/SerialDescriptor;ILkotlinx/serialization/DeserializationStrategy;Ljava/lang/Object;)Ljava/lang/Object;) @@ -344,29 +344,29 @@ public final class Container : java/lang/Object { ANEWARRAY (kotlin/reflect/KClass) DUP ICONST_0 - LDC (LResult$OK;) + LDC (LResult$Err;) INVOKESTATIC (kotlin/jvm/internal/Reflection, getOrCreateKotlinClass, (Ljava/lang/Class;)Lkotlin/reflect/KClass;) AASTORE DUP ICONST_1 - LDC (LResult$Err;) + LDC (LResult$OK;) INVOKESTATIC (kotlin/jvm/internal/Reflection, getOrCreateKotlinClass, (Ljava/lang/Class;)Lkotlin/reflect/KClass;) AASTORE ICONST_2 ANEWARRAY (kotlinx/serialization/KSerializer) DUP ICONST_0 - GETSTATIC (Result$OK$$serializer, INSTANCE, LResult$OK$$serializer;) - CHECKCAST (kotlinx/serialization/KSerializer) - AASTORE - DUP - ICONST_1 NEW (kotlinx/serialization/internal/ObjectSerializer) DUP LDC (Result.Err) GETSTATIC (Result$Err, INSTANCE, LResult$Err;) INVOKESPECIAL (kotlinx/serialization/internal/ObjectSerializer, , (Ljava/lang/String;Ljava/lang/Object;)V) AASTORE + DUP + ICONST_1 + GETSTATIC (Result$OK$$serializer, INSTANCE, LResult$OK$$serializer;) + CHECKCAST (kotlinx/serialization/KSerializer) + AASTORE INVOKESPECIAL (kotlinx/serialization/SealedClassSerializer, , (Ljava/lang/String;Lkotlin/reflect/KClass;[Lkotlin/reflect/KClass;[Lkotlinx/serialization/KSerializer;)V) ALOAD (0) GETFIELD (Container, r, LResult;) @@ -407,29 +407,29 @@ final class Result$Companion$serializer$1 : kotlin/jvm/internal/Lambda, kotlin/j ANEWARRAY (kotlin/reflect/KClass) DUP ICONST_0 - LDC (LResult$OK;) + LDC (LResult$Err;) INVOKESTATIC (kotlin/jvm/internal/Reflection, getOrCreateKotlinClass, (Ljava/lang/Class;)Lkotlin/reflect/KClass;) AASTORE DUP ICONST_1 - LDC (LResult$Err;) + LDC (LResult$OK;) INVOKESTATIC (kotlin/jvm/internal/Reflection, getOrCreateKotlinClass, (Ljava/lang/Class;)Lkotlin/reflect/KClass;) AASTORE ICONST_2 ANEWARRAY (kotlinx/serialization/KSerializer) DUP ICONST_0 - GETSTATIC (Result$OK$$serializer, INSTANCE, LResult$OK$$serializer;) - CHECKCAST (kotlinx/serialization/KSerializer) - AASTORE - DUP - ICONST_1 NEW (kotlinx/serialization/internal/ObjectSerializer) DUP LDC (Result.Err) GETSTATIC (Result$Err, INSTANCE, LResult$Err;) INVOKESPECIAL (kotlinx/serialization/internal/ObjectSerializer, , (Ljava/lang/String;Ljava/lang/Object;)V) AASTORE + DUP + ICONST_1 + GETSTATIC (Result$OK$$serializer, INSTANCE, LResult$OK$$serializer;) + CHECKCAST (kotlinx/serialization/KSerializer) + AASTORE INVOKESPECIAL (kotlinx/serialization/SealedClassSerializer, , (Ljava/lang/String;Lkotlin/reflect/KClass;[Lkotlin/reflect/KClass;[Lkotlinx/serialization/KSerializer;)V) ARETURN LABEL (L1) @@ -910,29 +910,29 @@ public final class X$Companion : java/lang/Object { ANEWARRAY (kotlin/reflect/KClass) DUP ICONST_0 - LDC (LResult$OK;) + LDC (LResult$Err;) INVOKESTATIC (kotlin/jvm/internal/Reflection, getOrCreateKotlinClass, (Ljava/lang/Class;)Lkotlin/reflect/KClass;) AASTORE DUP ICONST_1 - LDC (LResult$Err;) + LDC (LResult$OK;) INVOKESTATIC (kotlin/jvm/internal/Reflection, getOrCreateKotlinClass, (Ljava/lang/Class;)Lkotlin/reflect/KClass;) AASTORE ICONST_2 ANEWARRAY (kotlinx/serialization/KSerializer) DUP ICONST_0 - GETSTATIC (Result$OK$$serializer, INSTANCE, LResult$OK$$serializer;) - CHECKCAST (kotlinx/serialization/KSerializer) - AASTORE - DUP - ICONST_1 NEW (kotlinx/serialization/internal/ObjectSerializer) DUP LDC (Result.Err) GETSTATIC (Result$Err, INSTANCE, LResult$Err;) INVOKESPECIAL (kotlinx/serialization/internal/ObjectSerializer, , (Ljava/lang/String;Ljava/lang/Object;)V) AASTORE + DUP + ICONST_1 + GETSTATIC (Result$OK$$serializer, INSTANCE, LResult$OK$$serializer;) + CHECKCAST (kotlinx/serialization/KSerializer) + AASTORE INVOKESPECIAL (kotlinx/serialization/SealedClassSerializer, , (Ljava/lang/String;Lkotlin/reflect/KClass;[Lkotlin/reflect/KClass;[Lkotlinx/serialization/KSerializer;)V) ARETURN LABEL (L1)