// ISSUE: KT-77681
// WITH_STDLIB
// TARGET_BACKEND: JVM_IR
// TARGET_BACKEND: JS_IR
// TARGET_BACKEND: JS_IR_ES6
// IGNORE_BACKEND: JS_IR, JS_IR_ES6
// ^^^ KT-77681: Generation of stubs for class org.jetbrains.kotlin.ir.symbols.impl.IrValueParameterSymbolImpl is not supported yet.
//               Signature: null
//               Private signature: [ File '.../main/app.kt' <- #7 ]
// Idealy, it must be an IrValidatorError , should `checkValueScopes=true` would be provided to IrValidator invocation right after Fir2IR.

// FILE: lib.kt

import kotlinx.serialization.*
import kotlinx.serialization.json.*
import kotlin.test.assertEquals

@Serializable
open class OpenBody {
    var optional: String = "foo"
    val field2: String = optional
}

// FILE: app.kt

import kotlinx.serialization.*
import kotlinx.serialization.json.*
import kotlin.test.assertEquals

@Serializable
class Test1: OpenBody()

fun test1() {
    val json = Json { encodeDefaults = true }
    val string = json.encodeToString(Test1.serializer(), Test1())
    assertEquals("{\"optional\":\"foo\",\"field2\":\"foo\"}", string)
    val reconstructed = json.decodeFromString(Test1.serializer(), string)
    assertEquals("foo", reconstructed.field2)
}

fun box(): String {
    test1()
    return "OK"
}
