blob: 2c10adf549acfc1510afc2c21b622f3b9564bc57 [file]
// ISSUE: KT-70078
// FILE: ComplexOptions.kt
@file:JsQualifier("foo.bar")
import kotlinx.js.JsPlainObject
@JsPlainObject
external interface ComplexOptions {
val name: String
val method: String
}
// FILE: main.kt
import kotlinx.js.JsPlainObject
import kotlin.coroutines.*
private object EmptyContinuation: Continuation<Any?> {
override val context: CoroutineContext
get() = EmptyCoroutineContext
override fun resumeWith(result: Result<Any?>) {
result.getOrThrow()
}
}
fun builder(c: suspend () -> Unit) {
c.startCoroutine(EmptyContinuation)
}
@JsPlainObject
external interface Options {
val method: String
}
suspend fun getMethod(): String = "GET"
fun box(): String {
var result = "OK"
builder {
val options1 = Options(method = getMethod())
if (options1.method != "GET") {
result = options1.method
}
val method = getMethod()
val options2 = Options(method = method)
if (options2.method != "GET") {
result = options2.method
}
val complexOptions = ComplexOptions(method = getMethod(), name = "test")
if (complexOptions.method != "GET") {
result = complexOptions.method
}
val complexOptions2 = ComplexOptions(method = getMethod(), name = "test")
if (complexOptions2.method != "GET") {
result = complexOptions2.method
}
}
return result
}