| // KT-72474 | |
| import kotlinx.js.JsPlainObject | |
| @JsPlainObject | |
| external interface Base { | |
| val `first escaped`: String | |
| @JsName("second escaped") | |
| val value: String | |
| } | |
| @JsPlainObject | |
| external interface Test : Base { | |
| val `own escaped`: String | |
| @JsName("own @JsName") | |
| val test: String | |
| // To test that we collect overridden symbols @JsName | |
| override val value: String | |
| } | |
| fun box(): String { | |
| val base = Base(`first escaped` = "O", value = "K") | |
| if (base.`first escaped` != "O") return "Fail: direct access to `first escaped` gave '${base.`first escaped`}'" | |
| if (base.value != "K") return "Fail: direct access to value gave '${base.value}'" | |
| if (base.asDynamic()["first escaped"] != "O") return "Fail: dynamic direct access to `first escaped` gave '${base.asDynamic()["first escaped"]}'" | |
| if (base.asDynamic()["second escaped"] != "K") return "Fail: dynamic direct access to value gave '${base.asDynamic()["second escaped"]}'" | |
| val test = Test(`first escaped` = "O", value = "K", `own escaped` = "E", test = "Y") | |
| if (test.`first escaped` != "O") return "Fail: indirect access to `first escaped` gave '${test.`first escaped`}'" | |
| if (test.value != "K") return "Fail: indirect access to value gave '${test.value}'" | |
| if (test.`own escaped` != "E") return "Fail: direct access to `own escaped` gave '${test.`own escaped`}'" | |
| if (test.test != "Y") return "Fail: direct access to test gave '${test.test}'" | |
| if (test.asDynamic()["first escaped"] != "O") return "Fail: dynamic indirect access to `first escaped` gave '${test.asDynamic()["first escaped"]}'" | |
| if (test.asDynamic()["second escaped"] != "K") return "Fail: dynamic indirect access to value gave '${test.asDynamic()["second escaped"]}'" | |
| if (test.asDynamic()["own escaped"] != "E") return "Fail: dynamic direct access to `own escaped` gave '${test.asDynamic()["own escaped"]}'" | |
| if (test.asDynamic()["own @JsName"] != "Y") return "Fail: dynamic direct access to test gave '${test.asDynamic()["own @JsName"]}'" | |
| if (test.asDynamic()["first escaped"] != "O") return "Fail: dynamic direct access to `first escaped` gave '${base.asDynamic()["first escaped"]}'" | |
| if (test.asDynamic()["second escaped"] != "K") return "Fail: dynamic direct access to value gave '${base.asDynamic()["second escaped"]}'" | |
| return "OK" | |
| } |