diff --git a/build.gradle.kts b/build.gradle.kts
index a1dfb181225..fd3e60dbd8b 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -752,6 +752,8 @@ tasks {
dependsOn("jvmCompilerIntegrationTest")
dependsOn(":plugins:parcelize:parcelize-compiler:test")
+ dependsOn(":kotlinx-serialization-compiler-plugin:test")
+
dependsOn(":kotlin-util-io:test")
dependsOn(":kotlin-util-klib:test")
@@ -881,7 +883,6 @@ tasks {
":kotlin-sam-with-receiver-compiler-plugin:test",
":plugins:uast-kotlin:test",
":kotlin-annotation-processing-gradle:test",
- ":kotlinx-serialization-compiler-plugin:test",
":kotlinx-serialization-ide-plugin:test",
":idea:jvm-debugger:jvm-debugger-test:test",
"idea-plugin-additional-tests",
diff --git a/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/services/CompilerConfigurationProvider.kt b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/services/CompilerConfigurationProvider.kt
index 26d3bb50bfd..110029fa040 100644
--- a/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/services/CompilerConfigurationProvider.kt
+++ b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/services/CompilerConfigurationProvider.kt
@@ -87,12 +87,11 @@ open class CompilerConfigurationProviderImpl(
val initialConfiguration = createCompilerConfiguration(module)
val projectEnv = KotlinCoreEnvironment.ProjectEnvironment(testRootDisposable, applicationEnvironment, initialConfiguration)
val project = projectEnv.project
- configurators.forEach { it.registerCompilerExtensions(project) }
return KotlinCoreEnvironment.createForTests(
projectEnv,
initialConfiguration,
configFiles
- )
+ ).also { configurators.forEach { it.registerCompilerExtensions(project) } }
}
@TestInfrastructureInternals
diff --git a/gradle/verification-metadata.xml b/gradle/verification-metadata.xml
index 556f0013621..c8815116204 100644
--- a/gradle/verification-metadata.xml
+++ b/gradle/verification-metadata.xml
@@ -7694,6 +7694,11 @@
+
+
+
+
+
@@ -7728,6 +7733,11 @@
+
+
+
+
+
@@ -7768,6 +7778,11 @@
+
+
+
+
+
@@ -7788,6 +7803,11 @@
+
+
+
+
+
diff --git a/plugins/kotlin-serialization/kotlin-serialization-compiler/build.gradle.kts b/plugins/kotlin-serialization/kotlin-serialization-compiler/build.gradle.kts
index fc7f496f9a6..43c8902ae5d 100644
--- a/plugins/kotlin-serialization/kotlin-serialization-compiler/build.gradle.kts
+++ b/plugins/kotlin-serialization/kotlin-serialization-compiler/build.gradle.kts
@@ -20,8 +20,16 @@ dependencies {
runtimeOnly(kotlinStdlib())
testCompile(projectTests(":compiler:tests-common"))
+ testApi(projectTests(":compiler:test-infrastructure"))
+ testApi(projectTests(":compiler:test-infrastructure-utils"))
+ testApi(projectTests(":compiler:tests-compiler-utils"))
+ testApi(projectTests(":compiler:tests-common-new"))
+ testImplementation(projectTests(":generators:test-generator"))
testCompile(commonDep("junit:junit"))
- testImplementation("org.jetbrains.kotlinx:kotlinx-serialization-core:1.1.0")
+ testApiJUnit5(vintageEngine = true)
+
+ testImplementation("org.jetbrains.kotlinx:kotlinx-serialization-core:1.2.2")
+ testImplementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.2.2")
testRuntimeOnly(intellijCoreDep()) { includeJars("intellij-core") }
testRuntimeOnly(intellijDep()) { includeJars("platform-concurrency") }
@@ -43,6 +51,9 @@ sourcesJar()
javadocJar()
testsJar()
-projectTest(parallel = true) {
+projectTest(parallel = true, jUnit5Enabled = true) {
workingDir = rootDir
+ useJUnitPlatform()
}
+
+val generateTests by generator("org.jetbrains.kotlinx.serialization.TestGeneratorKt")
\ No newline at end of file
diff --git a/plugins/kotlin-serialization/kotlin-serialization-compiler/src/org/jetbrains/kotlinx/serialization/compiler/resolve/SerializableProperties.kt b/plugins/kotlin-serialization/kotlin-serialization-compiler/src/org/jetbrains/kotlinx/serialization/compiler/resolve/SerializableProperties.kt
index 5e591d36d90..be561974183 100644
--- a/plugins/kotlin-serialization/kotlin-serialization-compiler/src/org/jetbrains/kotlinx/serialization/compiler/resolve/SerializableProperties.kt
+++ b/plugins/kotlin-serialization/kotlin-serialization-compiler/src/org/jetbrains/kotlinx/serialization/compiler/resolve/SerializableProperties.kt
@@ -7,10 +7,13 @@ package org.jetbrains.kotlinx.serialization.compiler.resolve
import org.jetbrains.kotlin.descriptors.*
import org.jetbrains.kotlin.name.Name
+import org.jetbrains.kotlin.psi.KtDeclarationWithInitializer
+import org.jetbrains.kotlin.psi.KtParameter
import org.jetbrains.kotlin.resolve.BindingContext
import org.jetbrains.kotlin.resolve.descriptorUtil.getSuperClassNotAny
import org.jetbrains.kotlin.resolve.hasBackingField
import org.jetbrains.kotlin.resolve.scopes.DescriptorKindFilter
+import org.jetbrains.kotlin.resolve.source.getPsi
import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedClassDescriptor
import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedPropertyDescriptor
import org.jetbrains.kotlin.serialization.deserialization.getName
@@ -47,13 +50,15 @@ class SerializableProperties(private val serializableClass: ClassDescriptor, val
.filter { it.kind == CallableMemberDescriptor.Kind.DECLARATION }
.filter(::isPropSerializable)
.map { prop ->
+ val declaresDefaultValue = prop.declaresDefaultValue()
SerializableProperty(
prop,
primaryConstructorProperties[prop] ?: false,
prop.hasBackingField(bindingContext) || (prop is DeserializedPropertyDescriptor && prop.backingField != null) // workaround for TODO in .hasBackingField
// workaround for overridden getter (val) and getter+setter (var) - in this case hasBackingField returning false
// but initializer presents only for property with backing field
- || prop.declaresDefaultValue
+ || declaresDefaultValue,
+ declaresDefaultValue
)
}
.filterNot { it.transient }
@@ -88,6 +93,26 @@ class SerializableProperties(private val serializableClass: ClassDescriptor, val
?.original?.valueParameters?.any { it.declaresDefaultValue() } ?: false
}
+fun PropertyDescriptor.declaresDefaultValue(): Boolean{
+ when (val declaration = this.source.getPsi()) {
+ is KtDeclarationWithInitializer -> return declaration.initializer != null
+ is KtParameter -> return declaration.defaultValue != null
+ is Any -> return false // Not-null check
+ }
+ // PSI is null, property is from another module
+ if (this !is DeserializedPropertyDescriptor) return false
+ val myClassCtor = (this.containingDeclaration as? ClassDescriptor)?.unsubstitutedPrimaryConstructor ?: return false
+ // If property is a constructor parameter, check parameter default value
+ // (serializable classes always have parameters-as-properties, so no name clash here)
+ if (myClassCtor.valueParameters.find { it.name == this.name }?.declaresDefaultValue() == true) return true
+ // If it is a body property, then it is likely to have initializer when getter is not specified
+ // note this approach is not working well if we have smth like `get() = field`, but such cases on cross-module boundaries
+ // should be very marginal. If we want to solve them, we need to add protobuf metadata extension.
+ if (getter?.isDefault == true) return true
+ return false
+}
+
+
internal val SerializableProperties.goldenMask: Int
get() {
var goldenMask = 0
diff --git a/plugins/kotlin-serialization/kotlin-serialization-compiler/src/org/jetbrains/kotlinx/serialization/compiler/resolve/SerializableProperty.kt b/plugins/kotlin-serialization/kotlin-serialization-compiler/src/org/jetbrains/kotlinx/serialization/compiler/resolve/SerializableProperty.kt
index a959da01d81..c3e42649a48 100644
--- a/plugins/kotlin-serialization/kotlin-serialization-compiler/src/org/jetbrains/kotlinx/serialization/compiler/resolve/SerializableProperty.kt
+++ b/plugins/kotlin-serialization/kotlin-serialization-compiler/src/org/jetbrains/kotlinx/serialization/compiler/resolve/SerializableProperty.kt
@@ -29,22 +29,16 @@ import org.jetbrains.kotlinx.serialization.compiler.backend.common.analyzeSpecia
class SerializableProperty(
val descriptor: PropertyDescriptor,
val isConstructorParameterWithDefault: Boolean,
- hasBackingField: Boolean
+ hasBackingField: Boolean,
+ declaresDefaultValue: Boolean
) {
val name = descriptor.annotations.serialNameValue ?: descriptor.name.asString()
val type = descriptor.type
val genericIndex = type.genericIndex
val module = descriptor.module
val serializableWith = descriptor.serializableWith ?: analyzeSpecialSerializers(module, descriptor.annotations)?.defaultType
- val optional = !descriptor.annotations.serialRequired && descriptor.declaresDefaultValue
+ val optional = !descriptor.annotations.serialRequired && declaresDefaultValue
val transient = descriptor.annotations.serialTransient || !hasBackingField
val annotationsWithArguments: List, List>> =
descriptor.annotationsWithArguments()
}
-
-val PropertyDescriptor.declaresDefaultValue: Boolean
- get() = when (val declaration = this.source.getPsi()) {
- is KtDeclarationWithInitializer -> declaration.initializer != null
- is KtParameter -> declaration.defaultValue != null
- else -> false
- }
\ No newline at end of file
diff --git a/plugins/kotlin-serialization/kotlin-serialization-compiler/test/org/jetbrains/kotlinx/serialization/AbstractSerializationIrBoxTest.kt b/plugins/kotlin-serialization/kotlin-serialization-compiler/test/org/jetbrains/kotlinx/serialization/AbstractSerializationIrBoxTest.kt
new file mode 100644
index 00000000000..95098e88725
--- /dev/null
+++ b/plugins/kotlin-serialization/kotlin-serialization-compiler/test/org/jetbrains/kotlinx/serialization/AbstractSerializationIrBoxTest.kt
@@ -0,0 +1,21 @@
+/*
+ * Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors.
+ * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
+ */
+
+package org.jetbrains.kotlinx.serialization
+
+import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder
+import org.jetbrains.kotlin.test.runners.codegen.AbstractIrBlackBoxCodegenTest
+
+open class AbstractSerializationIrBoxTest : AbstractIrBlackBoxCodegenTest() {
+ private val coreLibraryPath = getSerializationCoreLibraryJar()
+ private val jsonLibraryPath = getSerializationLibraryJar("kotlinx.serialization.json.Json")
+
+ override fun configure(builder: TestConfigurationBuilder) {
+ super.configure(builder)
+ val librariesPaths = listOf(coreLibraryPath!!, jsonLibraryPath!!)
+ builder.configureForKotlinxSerialization(librariesPaths)
+ }
+
+}
\ No newline at end of file
diff --git a/plugins/kotlin-serialization/kotlin-serialization-compiler/test/org/jetbrains/kotlinx/serialization/RuntimeSearch.kt b/plugins/kotlin-serialization/kotlin-serialization-compiler/test/org/jetbrains/kotlinx/serialization/RuntimeSearch.kt
index 18e7cc91ee6..1b99d2a906b 100644
--- a/plugins/kotlin-serialization/kotlin-serialization-compiler/test/org/jetbrains/kotlinx/serialization/RuntimeSearch.kt
+++ b/plugins/kotlin-serialization/kotlin-serialization-compiler/test/org/jetbrains/kotlinx/serialization/RuntimeSearch.kt
@@ -5,9 +5,17 @@
package org.jetbrains.kotlinx.serialization
+import com.intellij.openapi.project.Project
import junit.framework.TestCase
+import org.jetbrains.kotlin.cli.jvm.config.addJvmClasspathRoots
+import org.jetbrains.kotlin.config.CompilerConfiguration
+import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder
+import org.jetbrains.kotlin.test.model.TestModule
+import org.jetbrains.kotlin.test.services.EnvironmentConfigurator
+import org.jetbrains.kotlin.test.services.RuntimeClasspathProvider
import org.jetbrains.kotlin.utils.PathUtil
import org.jetbrains.kotlinx.serialization.compiler.diagnostic.VersionReader
+import org.jetbrains.kotlinx.serialization.compiler.extensions.SerializationComponentRegistrar
import org.junit.Test
import java.io.File
import kotlin.test.assertTrue
@@ -31,8 +39,33 @@ class RuntimeLibraryInClasspathTest {
}
}
-internal fun getSerializationCoreLibraryJar(): File? = try {
- PathUtil.getResourcePathForClass(Class.forName("kotlinx.serialization.KSerializer"))
+internal fun getSerializationCoreLibraryJar(): File? = getSerializationLibraryJar("kotlinx.serialization.KSerializer")
+
+internal fun getSerializationLibraryJar(classToDetect: String): File? = try {
+ PathUtil.getResourcePathForClass(Class.forName(classToDetect))
} catch (e: ClassNotFoundException) {
null
}
+
+internal fun TestConfigurationBuilder.configureForKotlinxSerialization(librariesPaths: List) {
+ useConfigurators(
+ { services ->
+ object : EnvironmentConfigurator(services) {
+ override fun configureCompilerConfiguration(
+ configuration: CompilerConfiguration,
+ module: TestModule
+ ) {
+ configuration.addJvmClasspathRoots(librariesPaths)
+ }
+
+ override fun registerCompilerExtensions(project: Project) {
+ SerializationComponentRegistrar.registerExtensions(project)
+ }
+ }
+ })
+ useCustomRuntimeClasspathProvider {
+ object : RuntimeClasspathProvider() {
+ override fun runtimeClassPaths(): List = librariesPaths
+ }
+ }
+}
\ No newline at end of file
diff --git a/plugins/kotlin-serialization/kotlin-serialization-compiler/test/org/jetbrains/kotlinx/serialization/SerializationIrBoxTestGenerated.java b/plugins/kotlin-serialization/kotlin-serialization-compiler/test/org/jetbrains/kotlinx/serialization/SerializationIrBoxTestGenerated.java
new file mode 100644
index 00000000000..865356285e4
--- /dev/null
+++ b/plugins/kotlin-serialization/kotlin-serialization-compiler/test/org/jetbrains/kotlinx/serialization/SerializationIrBoxTestGenerated.java
@@ -0,0 +1,33 @@
+/*
+ * Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors.
+ * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
+ */
+
+package org.jetbrains.kotlinx.serialization;
+
+import com.intellij.testFramework.TestDataPath;
+import org.jetbrains.kotlin.test.util.KtTestUtil;
+import org.jetbrains.kotlin.test.TargetBackend;
+import org.jetbrains.kotlin.test.TestMetadata;
+import org.junit.jupiter.api.Nested;
+import org.junit.jupiter.api.Test;
+
+import java.io.File;
+import java.util.regex.Pattern;
+
+/** This class is generated by {@link GenerateNewCompilerTests.kt}. DO NOT MODIFY MANUALLY */
+@SuppressWarnings("all")
+@TestMetadata("plugins/kotlin-serialization/kotlin-serialization-compiler/testData/boxIr")
+@TestDataPath("$PROJECT_ROOT")
+public class SerializationIrBoxTestGenerated extends AbstractSerializationIrBoxTest {
+ @Test
+ public void testAllFilesPresentInBoxIr() throws Exception {
+ KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("plugins/kotlin-serialization/kotlin-serialization-compiler/testData/boxIr"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true);
+ }
+
+ @Test
+ @TestMetadata("multimoduleInheritance.kt")
+ public void testMultimoduleInheritance() throws Exception {
+ runTest("plugins/kotlin-serialization/kotlin-serialization-compiler/testData/boxIr/multimoduleInheritance.kt");
+ }
+}
diff --git a/plugins/kotlin-serialization/kotlin-serialization-compiler/test/org/jetbrains/kotlinx/serialization/TestGenerator.kt b/plugins/kotlin-serialization/kotlin-serialization-compiler/test/org/jetbrains/kotlinx/serialization/TestGenerator.kt
new file mode 100644
index 00000000000..bd0cd9b45f1
--- /dev/null
+++ b/plugins/kotlin-serialization/kotlin-serialization-compiler/test/org/jetbrains/kotlinx/serialization/TestGenerator.kt
@@ -0,0 +1,25 @@
+/*
+ * Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors.
+ * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
+ */
+
+package org.jetbrains.kotlinx.serialization
+
+import org.jetbrains.kotlin.test.generators.generateTestGroupSuiteWithJUnit5
+
+fun main(args: Array) {
+ System.setProperty("java.awt.headless", "true")
+
+ generateTestGroupSuiteWithJUnit5(args) {
+ testGroup(
+ "plugins/kotlin-serialization/kotlin-serialization-compiler/test",
+ "plugins/kotlin-serialization/kotlin-serialization-compiler/testData"
+ ) {
+
+ // New test infrastructure ONLY
+ testClass {
+ model("boxIr")
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/plugins/kotlin-serialization/kotlin-serialization-compiler/testData/boxIr/multimoduleInheritance.kt b/plugins/kotlin-serialization/kotlin-serialization-compiler/testData/boxIr/multimoduleInheritance.kt
new file mode 100644
index 00000000000..0e9428103b7
--- /dev/null
+++ b/plugins/kotlin-serialization/kotlin-serialization-compiler/testData/boxIr/multimoduleInheritance.kt
@@ -0,0 +1,56 @@
+// IGNORE_BACKEND_FIR: JVM_IR
+// TARGET_BACKEND: JVM_IR
+
+// WITH_RUNTIME
+
+// MODULE: lib
+// FILE: lib.kt
+
+package a
+
+import kotlinx.serialization.*
+
+@Serializable
+open class OpenBody {
+ var optional: String? = "foo"
+}
+
+@Serializable
+abstract class AbstractConstructor(var optional: String = "foo")
+
+
+// MODULE: app(lib)
+// FILE: app.kt
+
+package test
+
+import a.*
+import kotlinx.serialization.*
+import kotlinx.serialization.json.*
+import kotlin.test.assertEquals
+
+@Serializable
+class Test1: OpenBody()
+
+@Serializable
+class Test2: AbstractConstructor()
+
+fun test1() {
+ val string = Json.encodeToString(Test1.serializer(), Test1())
+ assertEquals("{}", string)
+ val reconstructed = Json.decodeFromString(Test1.serializer(), string)
+ assertEquals("foo", reconstructed.optional)
+}
+
+fun test2() {
+ val string = Json.encodeToString(Test2.serializer(), Test2())
+ assertEquals("{}", string)
+ val reconstructed = Json.decodeFromString(Test2.serializer(), string)
+ assertEquals("foo", reconstructed.optional)
+}
+
+fun box(): String {
+ test1()
+ test2()
+ return "OK"
+}
\ No newline at end of file
diff --git a/plugins/kotlin-serialization/kotlin-serialization-compiler/testData/codegen/Basic.ir.txt b/plugins/kotlin-serialization/kotlin-serialization-compiler/testData/codegen/Basic.ir.txt
index e260436683a..a39e0696931 100644
--- a/plugins/kotlin-serialization/kotlin-serialization-compiler/testData/codegen/Basic.ir.txt
+++ b/plugins/kotlin-serialization/kotlin-serialization-compiler/testData/codegen/Basic.ir.txt
@@ -72,8 +72,6 @@ public final class ListOfUsers$$serializer : java/lang/Object, kotlinx/serializa
ICONST_1
ISTORE (3)
ICONST_0
- ISTORE (4)
- ICONST_0
ISTORE (5)
ACONST_NULL
ASTORE (6)
@@ -386,8 +384,6 @@ public final class OptionalUser$$serializer : java/lang/Object, kotlinx/serializ
ICONST_1
ISTORE (3)
ICONST_0
- ISTORE (4)
- ICONST_0
ISTORE (5)
ACONST_NULL
ASTORE (6)
@@ -773,8 +769,6 @@ public final class User$$serializer : java/lang/Object, kotlinx/serialization/in
ICONST_1
ISTORE (3)
ICONST_0
- ISTORE (4)
- ICONST_0
ISTORE (5)
ACONST_NULL
ASTORE (6)
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 500076c5d44..cb16c06db6d 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
@@ -68,8 +68,6 @@ public final class Container$$serializer : java/lang/Object, kotlinx/serializati
ICONST_1
ISTORE (3)
ICONST_0
- ISTORE (4)
- ICONST_0
ISTORE (5)
ACONST_NULL
ASTORE (6)
@@ -274,14 +272,14 @@ public final class Container : java/lang/Object {
}
}
-final class Result$Companion$$cachedSerializer$delegate$2 : kotlin/jvm/internal/Lambda, kotlin/jvm/functions/Function0 {
- public final static Result$Companion$$cachedSerializer$delegate$2 INSTANCE
+final class Result$Companion$$cachedSerializer$delegate$1 : kotlin/jvm/internal/Lambda, kotlin/jvm/functions/Function0 {
+ public final static Result$Companion$$cachedSerializer$delegate$1 INSTANCE
static void () {
NEW
DUP
- INVOKESPECIAL (Result$Companion$$cachedSerializer$delegate$2, , ()V)
- PUTSTATIC (INSTANCE, LResult$Companion$$cachedSerializer$delegate$2;)
+ INVOKESPECIAL (Result$Companion$$cachedSerializer$delegate$1, , ()V)
+ PUTSTATIC (INSTANCE, LResult$Companion$$cachedSerializer$delegate$1;)
RETURN
}
@@ -344,7 +342,7 @@ final class Result$Companion$$cachedSerializer$delegate$2 : kotlin/jvm/internal/
LABEL (L0)
LINENUMBER (7)
ALOAD (0)
- INVOKEVIRTUAL (Result$Companion$$cachedSerializer$delegate$2, invoke, ()Lkotlinx/serialization/KSerializer;)
+ INVOKEVIRTUAL (Result$Companion$$cachedSerializer$delegate$1, invoke, ()Lkotlinx/serialization/KSerializer;)
ARETURN
LABEL (L1)
}
@@ -368,10 +366,13 @@ public final class Result$Companion : java/lang/Object {
LABEL (L1)
}
+ private final kotlin.Lazy get$cachedSerializer$delegate()
+
public final kotlinx.serialization.KSerializer serializer() {
LABEL (L0)
LINENUMBER (7)
- INVOKESTATIC (Result, access$get$cachedSerializer$delegate$cp, ()Lkotlin/Lazy;)
+ ALOAD (0)
+ INVOKESPECIAL (Result$Companion, get$cachedSerializer$delegate, ()Lkotlin/Lazy;)
INVOKEINTERFACE (kotlin/Lazy, getValue, ()Ljava/lang/Object;)
CHECKCAST
ARETURN
@@ -379,14 +380,14 @@ public final class Result$Companion : java/lang/Object {
}
}
-final class Result$Err$$cachedSerializer$delegate$2 : kotlin/jvm/internal/Lambda, kotlin/jvm/functions/Function0 {
- public final static Result$Err$$cachedSerializer$delegate$2 INSTANCE
+final class Result$Err$$cachedSerializer$delegate$1 : kotlin/jvm/internal/Lambda, kotlin/jvm/functions/Function0 {
+ public final static Result$Err$$cachedSerializer$delegate$1 INSTANCE
static void () {
NEW
DUP
- INVOKESPECIAL (Result$Err$$cachedSerializer$delegate$2, , ()V)
- PUTSTATIC (INSTANCE, LResult$Err$$cachedSerializer$delegate$2;)
+ INVOKESPECIAL (Result$Err$$cachedSerializer$delegate$1, , ()V)
+ PUTSTATIC (INSTANCE, LResult$Err$$cachedSerializer$delegate$1;)
RETURN
}
@@ -416,7 +417,7 @@ final class Result$Err$$cachedSerializer$delegate$2 : kotlin/jvm/internal/Lambda
LABEL (L0)
LINENUMBER (10)
ALOAD (0)
- INVOKEVIRTUAL (Result$Err$$cachedSerializer$delegate$2, invoke, ()Lkotlinx/serialization/KSerializer;)
+ INVOKEVIRTUAL (Result$Err$$cachedSerializer$delegate$1, invoke, ()Lkotlinx/serialization/KSerializer;)
ARETURN
LABEL (L1)
}
@@ -435,7 +436,7 @@ public final class Result$Err : Result {
LABEL (L0)
LINENUMBER (10)
GETSTATIC (PUBLICATION, Lkotlin/LazyThreadSafetyMode;)
- GETSTATIC (INSTANCE, LResult$Err$$cachedSerializer$delegate$2;)
+ GETSTATIC (INSTANCE, LResult$Err$$cachedSerializer$delegate$1;)
CHECKCAST
INVOKESTATIC (kotlin/LazyKt, lazy, (Lkotlin/LazyThreadSafetyMode;Lkotlin/jvm/functions/Function0;)Lkotlin/Lazy;)
PUTSTATIC ($cachedSerializer$delegate, Lkotlin/Lazy;)
@@ -452,10 +453,13 @@ public final class Result$Err : Result {
LABEL (L1)
}
+ private final kotlin.Lazy get$cachedSerializer$delegate()
+
public final kotlinx.serialization.KSerializer serializer() {
LABEL (L0)
LINENUMBER (10)
- GETSTATIC ($cachedSerializer$delegate, Lkotlin/Lazy;)
+ ALOAD (0)
+ INVOKESPECIAL (Result$Err, get$cachedSerializer$delegate, ()Lkotlin/Lazy;)
INVOKEINTERFACE (kotlin/Lazy, getValue, ()Ljava/lang/Object;)
CHECKCAST
ARETURN
@@ -531,8 +535,6 @@ public final class Result$OK$$serializer : java/lang/Object, kotlinx/serializati
ICONST_1
ISTORE (3)
ICONST_0
- ISTORE (4)
- ICONST_0
ISTORE (5)
ACONST_NULL
ASTORE (6)
@@ -745,7 +747,7 @@ public abstract class Result : java/lang/Object {
LABEL (L0)
LINENUMBER (7)
GETSTATIC (PUBLICATION, Lkotlin/LazyThreadSafetyMode;)
- GETSTATIC (INSTANCE, LResult$Companion$$cachedSerializer$delegate$2;)
+ GETSTATIC (INSTANCE, LResult$Companion$$cachedSerializer$delegate$1;)
CHECKCAST
INVOKESTATIC (kotlin/LazyKt, lazy, (Lkotlin/LazyThreadSafetyMode;Lkotlin/jvm/functions/Function0;)Lkotlin/Lazy;)
PUTSTATIC ($cachedSerializer$delegate, Lkotlin/Lazy;)