| // 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 |
| } |