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.
This commit is contained in:
Ilya Chernikov
2022-03-25 18:49:14 +01:00
committed by teamcity
parent 53bc593062
commit 5d6e2b57a7
12 changed files with 71 additions and 70 deletions
@@ -36,7 +36,7 @@ fun FirRegularClass.getSealedClassInheritors(session: FirSession): List<ClassId>
@OptIn(SealedClassInheritorsProviderInternals::class) @OptIn(SealedClassInheritorsProviderInternals::class)
fun FirRegularClass.setSealedClassInheritors(inheritors: List<ClassId>) { fun FirRegularClass.setSealedClassInheritors(inheritors: List<ClassId>) {
require(this.isSealed) require(this.isSealed)
sealedInheritorsAttr = inheritors sealedInheritorsAttr = inheritors.sortedBy { it.asFqNameString() }
} }
private object SealedClassInheritorsKey : FirDeclarationDataKey() private object SealedClassInheritorsKey : FirDeclarationDataKey()
@@ -20,8 +20,8 @@ FILE fqName:<root> fileName:/kt44814.kt
$this: VALUE_PARAMETER name:<this> type:kotlin.Any $this: VALUE_PARAMETER name:<this> type:kotlin.Any
CLASS CLASS name:FirSourceElement modality:SEALED visibility:public superTypes:[kotlin.Any] CLASS CLASS name:FirSourceElement modality:SEALED visibility:public superTypes:[kotlin.Any]
sealedSubclasses: sealedSubclasses:
CLASS CLASS name:FirPsiSourceElement modality:FINAL visibility:public superTypes:[<root>.FirSourceElement]
CLASS CLASS name:FirLightSourceElement modality:FINAL visibility:public superTypes:[<root>.FirSourceElement] CLASS CLASS name:FirLightSourceElement modality:FINAL visibility:public superTypes:[<root>.FirSourceElement]
CLASS CLASS name:FirPsiSourceElement modality:FINAL visibility:public superTypes:[<root>.FirSourceElement]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.FirSourceElement $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.FirSourceElement
CONSTRUCTOR visibility:protected <> () returnType:<root>.FirSourceElement [primary] CONSTRUCTOR visibility:protected <> () returnType:<root>.FirSourceElement [primary]
BLOCK_BODY BLOCK_BODY
@@ -372,8 +372,8 @@ FILE fqName:<root> fileName:/kt44814.kt
$this: VALUE_PARAMETER name:<this> type:kotlin.Any $this: VALUE_PARAMETER name:<this> type:kotlin.Any
CLASS CLASS name:FirModifier modality:SEALED visibility:internal superTypes:[kotlin.Any] CLASS CLASS name:FirModifier modality:SEALED visibility:internal superTypes:[kotlin.Any]
sealedSubclasses: sealedSubclasses:
CLASS CLASS name:FirPsiModifier modality:FINAL visibility:public superTypes:[<root>.FirModifier<<root>.ASTNode>]
CLASS CLASS name:FirLightModifier modality:FINAL visibility:public superTypes:[<root>.FirModifier<<root>.LighterASTNode>] CLASS CLASS name:FirLightModifier modality:FINAL visibility:public superTypes:[<root>.FirModifier<<root>.LighterASTNode>]
CLASS CLASS name:FirPsiModifier modality:FINAL visibility:public superTypes:[<root>.FirModifier<<root>.ASTNode>]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.FirModifier<Node of <root>.FirModifier> $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.FirModifier<Node of <root>.FirModifier>
TYPE_PARAMETER name:Node index:0 variance: superTypes:[kotlin.Any] reified:false TYPE_PARAMETER name:Node index:0 variance: superTypes:[kotlin.Any] reified:false
CONSTRUCTOR visibility:protected <> (node:Node of <root>.FirModifier, token:<root>.KtModifierKeywordToken) returnType:<root>.FirModifier<Node of <root>.FirModifier> [primary] CONSTRUCTOR visibility:protected <> (node:Node of <root>.FirModifier, token:<root>.KtModifierKeywordToken) returnType:<root>.FirModifier<Node of <root>.FirModifier> [primary]
@@ -511,8 +511,8 @@ FILE fqName:<root> fileName:/kt44814.kt
$this: VALUE_PARAMETER name:<this> type:kotlin.Any $this: VALUE_PARAMETER name:<this> type:kotlin.Any
CLASS CLASS name:FirModifierList modality:SEALED visibility:internal superTypes:[kotlin.Any] CLASS CLASS name:FirModifierList modality:SEALED visibility:internal superTypes:[kotlin.Any]
sealedSubclasses: sealedSubclasses:
CLASS CLASS name:FirPsiModifierList modality:FINAL visibility:public superTypes:[<root>.FirModifierList]
CLASS CLASS name:FirLightModifierList modality:FINAL visibility:public superTypes:[<root>.FirModifierList] CLASS CLASS name:FirLightModifierList modality:FINAL visibility:public superTypes:[<root>.FirModifierList]
CLASS CLASS name:FirPsiModifierList modality:FINAL visibility:public superTypes:[<root>.FirModifierList]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.FirModifierList $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.FirModifierList
CONSTRUCTOR visibility:protected <> () returnType:<root>.FirModifierList [primary] CONSTRUCTOR visibility:protected <> () returnType:<root>.FirModifierList [primary]
BLOCK_BODY BLOCK_BODY
+3 -3
View File
@@ -20,8 +20,8 @@ FILE fqName:<root> fileName:/kt44814.kt
$this: VALUE_PARAMETER name:<this> type:kotlin.Any $this: VALUE_PARAMETER name:<this> type:kotlin.Any
CLASS CLASS name:FirSourceElement modality:SEALED visibility:public superTypes:[kotlin.Any] CLASS CLASS name:FirSourceElement modality:SEALED visibility:public superTypes:[kotlin.Any]
sealedSubclasses: sealedSubclasses:
CLASS CLASS name:FirPsiSourceElement modality:FINAL visibility:public superTypes:[<root>.FirSourceElement]
CLASS CLASS name:FirLightSourceElement modality:FINAL visibility:public superTypes:[<root>.FirSourceElement] CLASS CLASS name:FirLightSourceElement modality:FINAL visibility:public superTypes:[<root>.FirSourceElement]
CLASS CLASS name:FirPsiSourceElement modality:FINAL visibility:public superTypes:[<root>.FirSourceElement]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.FirSourceElement $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.FirSourceElement
CONSTRUCTOR visibility:protected <> () returnType:<root>.FirSourceElement [primary] CONSTRUCTOR visibility:protected <> () returnType:<root>.FirSourceElement [primary]
BLOCK_BODY BLOCK_BODY
@@ -372,8 +372,8 @@ FILE fqName:<root> fileName:/kt44814.kt
$this: VALUE_PARAMETER name:<this> type:kotlin.Any $this: VALUE_PARAMETER name:<this> type:kotlin.Any
CLASS CLASS name:FirModifier modality:SEALED visibility:internal superTypes:[kotlin.Any] CLASS CLASS name:FirModifier modality:SEALED visibility:internal superTypes:[kotlin.Any]
sealedSubclasses: sealedSubclasses:
CLASS CLASS name:FirPsiModifier modality:FINAL visibility:public superTypes:[<root>.FirModifier<<root>.ASTNode>]
CLASS CLASS name:FirLightModifier modality:FINAL visibility:public superTypes:[<root>.FirModifier<<root>.LighterASTNode>] CLASS CLASS name:FirLightModifier modality:FINAL visibility:public superTypes:[<root>.FirModifier<<root>.LighterASTNode>]
CLASS CLASS name:FirPsiModifier modality:FINAL visibility:public superTypes:[<root>.FirModifier<<root>.ASTNode>]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.FirModifier<Node of <root>.FirModifier> $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.FirModifier<Node of <root>.FirModifier>
TYPE_PARAMETER name:Node index:0 variance: superTypes:[kotlin.Any] reified:false TYPE_PARAMETER name:Node index:0 variance: superTypes:[kotlin.Any] reified:false
CONSTRUCTOR visibility:protected <> (node:Node of <root>.FirModifier, token:<root>.KtModifierKeywordToken) returnType:<root>.FirModifier<Node of <root>.FirModifier> [primary] CONSTRUCTOR visibility:protected <> (node:Node of <root>.FirModifier, token:<root>.KtModifierKeywordToken) returnType:<root>.FirModifier<Node of <root>.FirModifier> [primary]
@@ -511,8 +511,8 @@ FILE fqName:<root> fileName:/kt44814.kt
$this: VALUE_PARAMETER name:<this> type:kotlin.Any $this: VALUE_PARAMETER name:<this> type:kotlin.Any
CLASS CLASS name:FirModifierList modality:SEALED visibility:internal superTypes:[kotlin.Any] CLASS CLASS name:FirModifierList modality:SEALED visibility:internal superTypes:[kotlin.Any]
sealedSubclasses: sealedSubclasses:
CLASS CLASS name:FirPsiModifierList modality:FINAL visibility:public superTypes:[<root>.FirModifierList]
CLASS CLASS name:FirLightModifierList modality:FINAL visibility:public superTypes:[<root>.FirModifierList] CLASS CLASS name:FirLightModifierList modality:FINAL visibility:public superTypes:[<root>.FirModifierList]
CLASS CLASS name:FirPsiModifierList modality:FINAL visibility:public superTypes:[<root>.FirModifierList]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.FirModifierList $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.FirModifierList
CONSTRUCTOR visibility:protected <> () returnType:<root>.FirModifierList [primary] CONSTRUCTOR visibility:protected <> () returnType:<root>.FirModifierList [primary]
BLOCK_BODY BLOCK_BODY
@@ -14,7 +14,7 @@ fun box(): String {
val klass = Base::class val klass = Base::class
if (!klass.isSealed) return "Error: Base is not sealed" if (!klass.isSealed) return "Error: Base is not sealed"
if (klass.isAbstract) return "Error: Base is not abstract" if (klass.isAbstract) return "Error: Base is not abstract"
return klass.sealedSubclasses return klass.sealedSubclasses.asReversed()
.joinToString("") { it.simpleName ?: "_No name provided_" } .joinToString("") { it.simpleName ?: "_No name provided_" }
.takeIf { it.isNotBlank() } .takeIf { it.isNotBlank() }
?: "_No sealed subclasses found_" ?: "_No sealed subclasses found_"
@@ -14,7 +14,7 @@ fun box(): String {
val klass = Base::class val klass = Base::class
if (!klass.isSealed) return "Error: Base is not sealed" if (!klass.isSealed) return "Error: Base is not sealed"
if (klass.isAbstract) return "Error: Base is abstract" if (klass.isAbstract) return "Error: Base is abstract"
return klass.sealedSubclasses return klass.sealedSubclasses.asReversed()
.joinToString("") { it.simpleName ?: "_No name provided_" } .joinToString("") { it.simpleName ?: "_No name provided_" }
.takeIf { it.isNotBlank() } .takeIf { it.isNotBlank() }
?: "_No sealed subclasses found_" ?: "_No sealed subclasses found_"
+1 -1
View File
@@ -2,8 +2,8 @@ FILE fqName:<root> fileName:/sealedClasses.kt
CLASS CLASS name:Expr modality:SEALED visibility:public superTypes:[kotlin.Any] CLASS CLASS name:Expr modality:SEALED visibility:public superTypes:[kotlin.Any]
sealedSubclasses: sealedSubclasses:
CLASS CLASS name:Const modality:FINAL visibility:public superTypes:[<root>.Expr] CLASS CLASS name:Const modality:FINAL visibility:public superTypes:[<root>.Expr]
CLASS CLASS name:Sum modality:FINAL visibility:public superTypes:[<root>.Expr]
CLASS OBJECT name:NotANumber modality:FINAL visibility:public superTypes:[<root>.Expr] CLASS OBJECT name:NotANumber modality:FINAL visibility:public superTypes:[<root>.Expr]
CLASS CLASS name:Sum modality:FINAL visibility:public superTypes:[<root>.Expr]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.Expr $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.Expr
CONSTRUCTOR visibility:protected <> () returnType:<root>.Expr [primary] CONSTRUCTOR visibility:protected <> () returnType:<root>.Expr [primary]
BLOCK_BODY BLOCK_BODY
@@ -1,9 +1,9 @@
FILE fqName:<root> fileName:/ArrayMap.kt FILE fqName:<root> fileName:/ArrayMap.kt
CLASS CLASS name:ArrayMap modality:SEALED visibility:public superTypes:[kotlin.collections.Iterable<T of <root>.ArrayMap>] CLASS CLASS name:ArrayMap modality:SEALED visibility:public superTypes:[kotlin.collections.Iterable<T of <root>.ArrayMap>]
sealedSubclasses: sealedSubclasses:
CLASS CLASS name:ArrayMapImpl modality:FINAL visibility:internal superTypes:[<root>.ArrayMap<T of <root>.ArrayMapImpl>]
CLASS OBJECT name:EmptyArrayMap modality:FINAL visibility:internal superTypes:[<root>.ArrayMap<kotlin.Nothing>] CLASS OBJECT name:EmptyArrayMap modality:FINAL visibility:internal superTypes:[<root>.ArrayMap<kotlin.Nothing>]
CLASS CLASS name:OneElementArrayMap modality:FINAL visibility:internal superTypes:[<root>.ArrayMap<T of <root>.OneElementArrayMap>] CLASS CLASS name:OneElementArrayMap modality:FINAL visibility:internal superTypes:[<root>.ArrayMap<T of <root>.OneElementArrayMap>]
CLASS CLASS name:ArrayMapImpl modality:FINAL visibility:internal superTypes:[<root>.ArrayMap<T of <root>.ArrayMapImpl>]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.ArrayMap<T of <root>.ArrayMap> $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.ArrayMap<T of <root>.ArrayMap>
TYPE_PARAMETER name:T index:0 variance: superTypes:[kotlin.Any] reified:false TYPE_PARAMETER name:T index:0 variance: superTypes:[kotlin.Any] reified:false
CONSTRUCTOR visibility:protected <> () returnType:<root>.ArrayMap<T of <root>.ArrayMap> [primary] CONSTRUCTOR visibility:protected <> () returnType:<root>.ArrayMap<T of <root>.ArrayMap> [primary]
+1 -1
View File
@@ -1,9 +1,9 @@
FILE fqName:<root> fileName:/ArrayMap.kt FILE fqName:<root> fileName:/ArrayMap.kt
CLASS CLASS name:ArrayMap modality:SEALED visibility:public superTypes:[kotlin.collections.Iterable<T of <root>.ArrayMap>] CLASS CLASS name:ArrayMap modality:SEALED visibility:public superTypes:[kotlin.collections.Iterable<T of <root>.ArrayMap>]
sealedSubclasses: sealedSubclasses:
CLASS CLASS name:ArrayMapImpl modality:FINAL visibility:internal superTypes:[<root>.ArrayMap<T of <root>.ArrayMapImpl>]
CLASS OBJECT name:EmptyArrayMap modality:FINAL visibility:internal superTypes:[<root>.ArrayMap<kotlin.Nothing>] CLASS OBJECT name:EmptyArrayMap modality:FINAL visibility:internal superTypes:[<root>.ArrayMap<kotlin.Nothing>]
CLASS CLASS name:OneElementArrayMap modality:FINAL visibility:internal superTypes:[<root>.ArrayMap<T of <root>.OneElementArrayMap>] CLASS CLASS name:OneElementArrayMap modality:FINAL visibility:internal superTypes:[<root>.ArrayMap<T of <root>.OneElementArrayMap>]
CLASS CLASS name:ArrayMapImpl modality:FINAL visibility:internal superTypes:[<root>.ArrayMap<T of <root>.ArrayMapImpl>]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.ArrayMap<T of <root>.ArrayMap> $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.ArrayMap<T of <root>.ArrayMap>
TYPE_PARAMETER name:T index:0 variance: superTypes:[kotlin.Any] reified:false TYPE_PARAMETER name:T index:0 variance: superTypes:[kotlin.Any] reified:false
CONSTRUCTOR visibility:protected <> () returnType:<root>.ArrayMap<T of <root>.ArrayMap> [primary] CONSTRUCTOR visibility:protected <> () returnType:<root>.ArrayMap<T of <root>.ArrayMap> [primary]
@@ -191,7 +191,7 @@ class LazyJavaClassDescriptor(
val attributes = TypeUsage.COMMON.toAttributes() val attributes = TypeUsage.COMMON.toAttributes()
jClass.permittedTypes.mapNotNull { jClass.permittedTypes.mapNotNull {
c.typeResolver.transformJavaType(it, attributes).constructor.declarationDescriptor as? ClassDescriptor c.typeResolver.transformJavaType(it, attributes).constructor.declarationDescriptor as? ClassDescriptor
} }.sortedBy { it.fqNameSafe.asString() }
} else { } else {
emptyList() emptyList()
} }
@@ -10,6 +10,7 @@ import org.jetbrains.kotlin.descriptors.Modality
import org.jetbrains.kotlin.descriptors.PackageFragmentDescriptor import org.jetbrains.kotlin.descriptors.PackageFragmentDescriptor
import org.jetbrains.kotlin.descriptors.TypeAliasDescriptor import org.jetbrains.kotlin.descriptors.TypeAliasDescriptor
import org.jetbrains.kotlin.incremental.components.NoLookupLocation 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.descriptorUtil.parents
import org.jetbrains.kotlin.resolve.scopes.DescriptorKindFilter import org.jetbrains.kotlin.resolve.scopes.DescriptorKindFilter
import org.jetbrains.kotlin.resolve.scopes.MemberScope import org.jetbrains.kotlin.resolve.scopes.MemberScope
@@ -78,7 +79,7 @@ object CliSealedClassInheritorsProvider : SealedClassInheritorsProvider() {
) )
} }
collectSubclasses(sealedClass.unsubstitutedInnerClassesScope, collectNested = true) collectSubclasses(sealedClass.unsubstitutedInnerClassesScope, collectNested = true)
return result return result.sortedBy { it.fqNameSafe.asString() }
} }
} }
@@ -308,12 +308,12 @@ final class Result$Companion$$cachedSerializer$delegate$1 : kotlin/jvm/internal/
ASTORE (1) ASTORE (1)
ALOAD (1) ALOAD (1)
ICONST_0 ICONST_0
LDC (LResult$OK;) LDC (LResult$Err;)
INVOKESTATIC (kotlin/jvm/internal/Reflection, getOrCreateKotlinClass, (Ljava/lang/Class;)Lkotlin/reflect/KClass;) INVOKESTATIC (kotlin/jvm/internal/Reflection, getOrCreateKotlinClass, (Ljava/lang/Class;)Lkotlin/reflect/KClass;)
AASTORE AASTORE
ALOAD (1) ALOAD (1)
ICONST_1 ICONST_1
LDC (LResult$Err;) LDC (LResult$OK;)
INVOKESTATIC (kotlin/jvm/internal/Reflection, getOrCreateKotlinClass, (Ljava/lang/Class;)Lkotlin/reflect/KClass;) INVOKESTATIC (kotlin/jvm/internal/Reflection, getOrCreateKotlinClass, (Ljava/lang/Class;)Lkotlin/reflect/KClass;)
AASTORE AASTORE
ALOAD (1) ALOAD (1)
@@ -322,11 +322,6 @@ final class Result$Companion$$cachedSerializer$delegate$1 : kotlin/jvm/internal/
ASTORE (1) ASTORE (1)
ALOAD (1) ALOAD (1)
ICONST_0 ICONST_0
GETSTATIC (Result$OK$$serializer, INSTANCE, LResult$OK$$serializer;)
CHECKCAST (kotlinx/serialization/KSerializer)
AASTORE
ALOAD (1)
ICONST_1
NEW (kotlinx/serialization/internal/ObjectSerializer) NEW (kotlinx/serialization/internal/ObjectSerializer)
DUP DUP
LDC (Result.Err) LDC (Result.Err)
@@ -335,6 +330,11 @@ final class Result$Companion$$cachedSerializer$delegate$1 : kotlin/jvm/internal/
CHECKCAST (kotlinx/serialization/KSerializer) CHECKCAST (kotlinx/serialization/KSerializer)
AASTORE AASTORE
ALOAD (1) ALOAD (1)
ICONST_1
GETSTATIC (Result$OK$$serializer, INSTANCE, LResult$OK$$serializer;)
CHECKCAST (kotlinx/serialization/KSerializer)
AASTORE
ALOAD (1)
INVOKESPECIAL (kotlinx/serialization/SealedClassSerializer, <init>, (Ljava/lang/String;Lkotlin/reflect/KClass;[Lkotlin/reflect/KClass;[Lkotlinx/serialization/KSerializer;)V) INVOKESPECIAL (kotlinx/serialization/SealedClassSerializer, <init>, (Ljava/lang/String;Lkotlin/reflect/KClass;[Lkotlin/reflect/KClass;[Lkotlinx/serialization/KSerializer;)V)
CHECKCAST (kotlinx/serialization/KSerializer) CHECKCAST (kotlinx/serialization/KSerializer)
ARETURN ARETURN
@@ -841,12 +841,12 @@ public final class X$Companion : java/lang/Object {
ASTORE (1) ASTORE (1)
ALOAD (1) ALOAD (1)
ICONST_0 ICONST_0
LDC (LResult$OK;) LDC (LResult$Err;)
INVOKESTATIC (kotlin/jvm/internal/Reflection, getOrCreateKotlinClass, (Ljava/lang/Class;)Lkotlin/reflect/KClass;) INVOKESTATIC (kotlin/jvm/internal/Reflection, getOrCreateKotlinClass, (Ljava/lang/Class;)Lkotlin/reflect/KClass;)
AASTORE AASTORE
ALOAD (1) ALOAD (1)
ICONST_1 ICONST_1
LDC (LResult$Err;) LDC (LResult$OK;)
INVOKESTATIC (kotlin/jvm/internal/Reflection, getOrCreateKotlinClass, (Ljava/lang/Class;)Lkotlin/reflect/KClass;) INVOKESTATIC (kotlin/jvm/internal/Reflection, getOrCreateKotlinClass, (Ljava/lang/Class;)Lkotlin/reflect/KClass;)
AASTORE AASTORE
ALOAD (1) ALOAD (1)
@@ -855,11 +855,6 @@ public final class X$Companion : java/lang/Object {
ASTORE (1) ASTORE (1)
ALOAD (1) ALOAD (1)
ICONST_0 ICONST_0
GETSTATIC (Result$OK$$serializer, INSTANCE, LResult$OK$$serializer;)
CHECKCAST (kotlinx/serialization/KSerializer)
AASTORE
ALOAD (1)
ICONST_1
NEW (kotlinx/serialization/internal/ObjectSerializer) NEW (kotlinx/serialization/internal/ObjectSerializer)
DUP DUP
LDC (Result.Err) LDC (Result.Err)
@@ -868,6 +863,11 @@ public final class X$Companion : java/lang/Object {
CHECKCAST (kotlinx/serialization/KSerializer) CHECKCAST (kotlinx/serialization/KSerializer)
AASTORE AASTORE
ALOAD (1) ALOAD (1)
ICONST_1
GETSTATIC (Result$OK$$serializer, INSTANCE, LResult$OK$$serializer;)
CHECKCAST (kotlinx/serialization/KSerializer)
AASTORE
ALOAD (1)
INVOKESPECIAL (kotlinx/serialization/SealedClassSerializer, <init>, (Ljava/lang/String;Lkotlin/reflect/KClass;[Lkotlin/reflect/KClass;[Lkotlinx/serialization/KSerializer;)V) INVOKESPECIAL (kotlinx/serialization/SealedClassSerializer, <init>, (Ljava/lang/String;Lkotlin/reflect/KClass;[Lkotlin/reflect/KClass;[Lkotlinx/serialization/KSerializer;)V)
CHECKCAST (kotlinx/serialization/KSerializer) CHECKCAST (kotlinx/serialization/KSerializer)
ARETURN ARETURN
@@ -53,29 +53,29 @@ public final class Container$$serializer : java/lang/Object, kotlinx/serializati
ANEWARRAY (kotlin/reflect/KClass) ANEWARRAY (kotlin/reflect/KClass)
DUP DUP
ICONST_0 ICONST_0
LDC (LResult$OK;) LDC (LResult$Err;)
INVOKESTATIC (kotlin/jvm/internal/Reflection, getOrCreateKotlinClass, (Ljava/lang/Class;)Lkotlin/reflect/KClass;) INVOKESTATIC (kotlin/jvm/internal/Reflection, getOrCreateKotlinClass, (Ljava/lang/Class;)Lkotlin/reflect/KClass;)
AASTORE AASTORE
DUP DUP
ICONST_1 ICONST_1
LDC (LResult$Err;) LDC (LResult$OK;)
INVOKESTATIC (kotlin/jvm/internal/Reflection, getOrCreateKotlinClass, (Ljava/lang/Class;)Lkotlin/reflect/KClass;) INVOKESTATIC (kotlin/jvm/internal/Reflection, getOrCreateKotlinClass, (Ljava/lang/Class;)Lkotlin/reflect/KClass;)
AASTORE AASTORE
ICONST_2 ICONST_2
ANEWARRAY (kotlinx/serialization/KSerializer) ANEWARRAY (kotlinx/serialization/KSerializer)
DUP DUP
ICONST_0 ICONST_0
GETSTATIC (Result$OK$$serializer, INSTANCE, LResult$OK$$serializer;)
CHECKCAST (kotlinx/serialization/KSerializer)
AASTORE
DUP
ICONST_1
NEW (kotlinx/serialization/internal/ObjectSerializer) NEW (kotlinx/serialization/internal/ObjectSerializer)
DUP DUP
LDC (Result.Err) LDC (Result.Err)
GETSTATIC (Result$Err, INSTANCE, LResult$Err;) GETSTATIC (Result$Err, INSTANCE, LResult$Err;)
INVOKESPECIAL (kotlinx/serialization/internal/ObjectSerializer, <init>, (Ljava/lang/String;Ljava/lang/Object;)V) INVOKESPECIAL (kotlinx/serialization/internal/ObjectSerializer, <init>, (Ljava/lang/String;Ljava/lang/Object;)V)
AASTORE AASTORE
DUP
ICONST_1
GETSTATIC (Result$OK$$serializer, INSTANCE, LResult$OK$$serializer;)
CHECKCAST (kotlinx/serialization/KSerializer)
AASTORE
INVOKESPECIAL (kotlinx/serialization/SealedClassSerializer, <init>, (Ljava/lang/String;Lkotlin/reflect/KClass;[Lkotlin/reflect/KClass;[Lkotlinx/serialization/KSerializer;)V) INVOKESPECIAL (kotlinx/serialization/SealedClassSerializer, <init>, (Ljava/lang/String;Lkotlin/reflect/KClass;[Lkotlin/reflect/KClass;[Lkotlinx/serialization/KSerializer;)V)
AASTORE AASTORE
ARETURN ARETURN
@@ -112,29 +112,29 @@ public final class Container$$serializer : java/lang/Object, kotlinx/serializati
ANEWARRAY (kotlin/reflect/KClass) ANEWARRAY (kotlin/reflect/KClass)
DUP DUP
ICONST_0 ICONST_0
LDC (LResult$OK;) LDC (LResult$Err;)
INVOKESTATIC (kotlin/jvm/internal/Reflection, getOrCreateKotlinClass, (Ljava/lang/Class;)Lkotlin/reflect/KClass;) INVOKESTATIC (kotlin/jvm/internal/Reflection, getOrCreateKotlinClass, (Ljava/lang/Class;)Lkotlin/reflect/KClass;)
AASTORE AASTORE
DUP DUP
ICONST_1 ICONST_1
LDC (LResult$Err;) LDC (LResult$OK;)
INVOKESTATIC (kotlin/jvm/internal/Reflection, getOrCreateKotlinClass, (Ljava/lang/Class;)Lkotlin/reflect/KClass;) INVOKESTATIC (kotlin/jvm/internal/Reflection, getOrCreateKotlinClass, (Ljava/lang/Class;)Lkotlin/reflect/KClass;)
AASTORE AASTORE
ICONST_2 ICONST_2
ANEWARRAY (kotlinx/serialization/KSerializer) ANEWARRAY (kotlinx/serialization/KSerializer)
DUP DUP
ICONST_0 ICONST_0
GETSTATIC (Result$OK$$serializer, INSTANCE, LResult$OK$$serializer;)
CHECKCAST (kotlinx/serialization/KSerializer)
AASTORE
DUP
ICONST_1
NEW (kotlinx/serialization/internal/ObjectSerializer) NEW (kotlinx/serialization/internal/ObjectSerializer)
DUP DUP
LDC (Result.Err) LDC (Result.Err)
GETSTATIC (Result$Err, INSTANCE, LResult$Err;) GETSTATIC (Result$Err, INSTANCE, LResult$Err;)
INVOKESPECIAL (kotlinx/serialization/internal/ObjectSerializer, <init>, (Ljava/lang/String;Ljava/lang/Object;)V) INVOKESPECIAL (kotlinx/serialization/internal/ObjectSerializer, <init>, (Ljava/lang/String;Ljava/lang/Object;)V)
AASTORE AASTORE
DUP
ICONST_1
GETSTATIC (Result$OK$$serializer, INSTANCE, LResult$OK$$serializer;)
CHECKCAST (kotlinx/serialization/KSerializer)
AASTORE
INVOKESPECIAL (kotlinx/serialization/SealedClassSerializer, <init>, (Ljava/lang/String;Lkotlin/reflect/KClass;[Lkotlin/reflect/KClass;[Lkotlinx/serialization/KSerializer;)V) INVOKESPECIAL (kotlinx/serialization/SealedClassSerializer, <init>, (Ljava/lang/String;Lkotlin/reflect/KClass;[Lkotlin/reflect/KClass;[Lkotlinx/serialization/KSerializer;)V)
ALOAD (5) ALOAD (5)
INVOKEINTERFACE (kotlinx/serialization/encoding/CompositeDecoder, decodeSerializableElement, (Lkotlinx/serialization/descriptors/SerialDescriptor;ILkotlinx/serialization/DeserializationStrategy;Ljava/lang/Object;)Ljava/lang/Object;) 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) ANEWARRAY (kotlin/reflect/KClass)
DUP DUP
ICONST_0 ICONST_0
LDC (LResult$OK;) LDC (LResult$Err;)
INVOKESTATIC (kotlin/jvm/internal/Reflection, getOrCreateKotlinClass, (Ljava/lang/Class;)Lkotlin/reflect/KClass;) INVOKESTATIC (kotlin/jvm/internal/Reflection, getOrCreateKotlinClass, (Ljava/lang/Class;)Lkotlin/reflect/KClass;)
AASTORE AASTORE
DUP DUP
ICONST_1 ICONST_1
LDC (LResult$Err;) LDC (LResult$OK;)
INVOKESTATIC (kotlin/jvm/internal/Reflection, getOrCreateKotlinClass, (Ljava/lang/Class;)Lkotlin/reflect/KClass;) INVOKESTATIC (kotlin/jvm/internal/Reflection, getOrCreateKotlinClass, (Ljava/lang/Class;)Lkotlin/reflect/KClass;)
AASTORE AASTORE
ICONST_2 ICONST_2
ANEWARRAY (kotlinx/serialization/KSerializer) ANEWARRAY (kotlinx/serialization/KSerializer)
DUP DUP
ICONST_0 ICONST_0
GETSTATIC (Result$OK$$serializer, INSTANCE, LResult$OK$$serializer;)
CHECKCAST (kotlinx/serialization/KSerializer)
AASTORE
DUP
ICONST_1
NEW (kotlinx/serialization/internal/ObjectSerializer) NEW (kotlinx/serialization/internal/ObjectSerializer)
DUP DUP
LDC (Result.Err) LDC (Result.Err)
GETSTATIC (Result$Err, INSTANCE, LResult$Err;) GETSTATIC (Result$Err, INSTANCE, LResult$Err;)
INVOKESPECIAL (kotlinx/serialization/internal/ObjectSerializer, <init>, (Ljava/lang/String;Ljava/lang/Object;)V) INVOKESPECIAL (kotlinx/serialization/internal/ObjectSerializer, <init>, (Ljava/lang/String;Ljava/lang/Object;)V)
AASTORE AASTORE
DUP
ICONST_1
GETSTATIC (Result$OK$$serializer, INSTANCE, LResult$OK$$serializer;)
CHECKCAST (kotlinx/serialization/KSerializer)
AASTORE
INVOKESPECIAL (kotlinx/serialization/SealedClassSerializer, <init>, (Ljava/lang/String;Lkotlin/reflect/KClass;[Lkotlin/reflect/KClass;[Lkotlinx/serialization/KSerializer;)V) INVOKESPECIAL (kotlinx/serialization/SealedClassSerializer, <init>, (Ljava/lang/String;Lkotlin/reflect/KClass;[Lkotlin/reflect/KClass;[Lkotlinx/serialization/KSerializer;)V)
ALOAD (5) ALOAD (5)
INVOKEINTERFACE (kotlinx/serialization/encoding/CompositeDecoder, decodeSerializableElement, (Lkotlinx/serialization/descriptors/SerialDescriptor;ILkotlinx/serialization/DeserializationStrategy;Ljava/lang/Object;)Ljava/lang/Object;) 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) ANEWARRAY (kotlin/reflect/KClass)
DUP DUP
ICONST_0 ICONST_0
LDC (LResult$OK;) LDC (LResult$Err;)
INVOKESTATIC (kotlin/jvm/internal/Reflection, getOrCreateKotlinClass, (Ljava/lang/Class;)Lkotlin/reflect/KClass;) INVOKESTATIC (kotlin/jvm/internal/Reflection, getOrCreateKotlinClass, (Ljava/lang/Class;)Lkotlin/reflect/KClass;)
AASTORE AASTORE
DUP DUP
ICONST_1 ICONST_1
LDC (LResult$Err;) LDC (LResult$OK;)
INVOKESTATIC (kotlin/jvm/internal/Reflection, getOrCreateKotlinClass, (Ljava/lang/Class;)Lkotlin/reflect/KClass;) INVOKESTATIC (kotlin/jvm/internal/Reflection, getOrCreateKotlinClass, (Ljava/lang/Class;)Lkotlin/reflect/KClass;)
AASTORE AASTORE
ICONST_2 ICONST_2
ANEWARRAY (kotlinx/serialization/KSerializer) ANEWARRAY (kotlinx/serialization/KSerializer)
DUP DUP
ICONST_0 ICONST_0
GETSTATIC (Result$OK$$serializer, INSTANCE, LResult$OK$$serializer;)
CHECKCAST (kotlinx/serialization/KSerializer)
AASTORE
DUP
ICONST_1
NEW (kotlinx/serialization/internal/ObjectSerializer) NEW (kotlinx/serialization/internal/ObjectSerializer)
DUP DUP
LDC (Result.Err) LDC (Result.Err)
GETSTATIC (Result$Err, INSTANCE, LResult$Err;) GETSTATIC (Result$Err, INSTANCE, LResult$Err;)
INVOKESPECIAL (kotlinx/serialization/internal/ObjectSerializer, <init>, (Ljava/lang/String;Ljava/lang/Object;)V) INVOKESPECIAL (kotlinx/serialization/internal/ObjectSerializer, <init>, (Ljava/lang/String;Ljava/lang/Object;)V)
AASTORE AASTORE
DUP
ICONST_1
GETSTATIC (Result$OK$$serializer, INSTANCE, LResult$OK$$serializer;)
CHECKCAST (kotlinx/serialization/KSerializer)
AASTORE
INVOKESPECIAL (kotlinx/serialization/SealedClassSerializer, <init>, (Ljava/lang/String;Lkotlin/reflect/KClass;[Lkotlin/reflect/KClass;[Lkotlinx/serialization/KSerializer;)V) INVOKESPECIAL (kotlinx/serialization/SealedClassSerializer, <init>, (Ljava/lang/String;Lkotlin/reflect/KClass;[Lkotlin/reflect/KClass;[Lkotlinx/serialization/KSerializer;)V)
ALOAD (0) ALOAD (0)
GETFIELD (Container, r, LResult;) GETFIELD (Container, r, LResult;)
@@ -407,29 +407,29 @@ final class Result$Companion$serializer$1 : kotlin/jvm/internal/Lambda, kotlin/j
ANEWARRAY (kotlin/reflect/KClass) ANEWARRAY (kotlin/reflect/KClass)
DUP DUP
ICONST_0 ICONST_0
LDC (LResult$OK;) LDC (LResult$Err;)
INVOKESTATIC (kotlin/jvm/internal/Reflection, getOrCreateKotlinClass, (Ljava/lang/Class;)Lkotlin/reflect/KClass;) INVOKESTATIC (kotlin/jvm/internal/Reflection, getOrCreateKotlinClass, (Ljava/lang/Class;)Lkotlin/reflect/KClass;)
AASTORE AASTORE
DUP DUP
ICONST_1 ICONST_1
LDC (LResult$Err;) LDC (LResult$OK;)
INVOKESTATIC (kotlin/jvm/internal/Reflection, getOrCreateKotlinClass, (Ljava/lang/Class;)Lkotlin/reflect/KClass;) INVOKESTATIC (kotlin/jvm/internal/Reflection, getOrCreateKotlinClass, (Ljava/lang/Class;)Lkotlin/reflect/KClass;)
AASTORE AASTORE
ICONST_2 ICONST_2
ANEWARRAY (kotlinx/serialization/KSerializer) ANEWARRAY (kotlinx/serialization/KSerializer)
DUP DUP
ICONST_0 ICONST_0
GETSTATIC (Result$OK$$serializer, INSTANCE, LResult$OK$$serializer;)
CHECKCAST (kotlinx/serialization/KSerializer)
AASTORE
DUP
ICONST_1
NEW (kotlinx/serialization/internal/ObjectSerializer) NEW (kotlinx/serialization/internal/ObjectSerializer)
DUP DUP
LDC (Result.Err) LDC (Result.Err)
GETSTATIC (Result$Err, INSTANCE, LResult$Err;) GETSTATIC (Result$Err, INSTANCE, LResult$Err;)
INVOKESPECIAL (kotlinx/serialization/internal/ObjectSerializer, <init>, (Ljava/lang/String;Ljava/lang/Object;)V) INVOKESPECIAL (kotlinx/serialization/internal/ObjectSerializer, <init>, (Ljava/lang/String;Ljava/lang/Object;)V)
AASTORE AASTORE
DUP
ICONST_1
GETSTATIC (Result$OK$$serializer, INSTANCE, LResult$OK$$serializer;)
CHECKCAST (kotlinx/serialization/KSerializer)
AASTORE
INVOKESPECIAL (kotlinx/serialization/SealedClassSerializer, <init>, (Ljava/lang/String;Lkotlin/reflect/KClass;[Lkotlin/reflect/KClass;[Lkotlinx/serialization/KSerializer;)V) INVOKESPECIAL (kotlinx/serialization/SealedClassSerializer, <init>, (Ljava/lang/String;Lkotlin/reflect/KClass;[Lkotlin/reflect/KClass;[Lkotlinx/serialization/KSerializer;)V)
ARETURN ARETURN
LABEL (L1) LABEL (L1)
@@ -910,29 +910,29 @@ public final class X$Companion : java/lang/Object {
ANEWARRAY (kotlin/reflect/KClass) ANEWARRAY (kotlin/reflect/KClass)
DUP DUP
ICONST_0 ICONST_0
LDC (LResult$OK;) LDC (LResult$Err;)
INVOKESTATIC (kotlin/jvm/internal/Reflection, getOrCreateKotlinClass, (Ljava/lang/Class;)Lkotlin/reflect/KClass;) INVOKESTATIC (kotlin/jvm/internal/Reflection, getOrCreateKotlinClass, (Ljava/lang/Class;)Lkotlin/reflect/KClass;)
AASTORE AASTORE
DUP DUP
ICONST_1 ICONST_1
LDC (LResult$Err;) LDC (LResult$OK;)
INVOKESTATIC (kotlin/jvm/internal/Reflection, getOrCreateKotlinClass, (Ljava/lang/Class;)Lkotlin/reflect/KClass;) INVOKESTATIC (kotlin/jvm/internal/Reflection, getOrCreateKotlinClass, (Ljava/lang/Class;)Lkotlin/reflect/KClass;)
AASTORE AASTORE
ICONST_2 ICONST_2
ANEWARRAY (kotlinx/serialization/KSerializer) ANEWARRAY (kotlinx/serialization/KSerializer)
DUP DUP
ICONST_0 ICONST_0
GETSTATIC (Result$OK$$serializer, INSTANCE, LResult$OK$$serializer;)
CHECKCAST (kotlinx/serialization/KSerializer)
AASTORE
DUP
ICONST_1
NEW (kotlinx/serialization/internal/ObjectSerializer) NEW (kotlinx/serialization/internal/ObjectSerializer)
DUP DUP
LDC (Result.Err) LDC (Result.Err)
GETSTATIC (Result$Err, INSTANCE, LResult$Err;) GETSTATIC (Result$Err, INSTANCE, LResult$Err;)
INVOKESPECIAL (kotlinx/serialization/internal/ObjectSerializer, <init>, (Ljava/lang/String;Ljava/lang/Object;)V) INVOKESPECIAL (kotlinx/serialization/internal/ObjectSerializer, <init>, (Ljava/lang/String;Ljava/lang/Object;)V)
AASTORE AASTORE
DUP
ICONST_1
GETSTATIC (Result$OK$$serializer, INSTANCE, LResult$OK$$serializer;)
CHECKCAST (kotlinx/serialization/KSerializer)
AASTORE
INVOKESPECIAL (kotlinx/serialization/SealedClassSerializer, <init>, (Ljava/lang/String;Lkotlin/reflect/KClass;[Lkotlin/reflect/KClass;[Lkotlinx/serialization/KSerializer;)V) INVOKESPECIAL (kotlinx/serialization/SealedClassSerializer, <init>, (Ljava/lang/String;Lkotlin/reflect/KClass;[Lkotlin/reflect/KClass;[Lkotlinx/serialization/KSerializer;)V)
ARETURN ARETURN
LABEL (L1) LABEL (L1)