| // TARGET_BACKEND: WASM |
| // WITH_STDLIB |
| |
| @JsFun("(v) => v") |
| external fun jsIdentityAny(v: JsAny?): JsAny? |
| |
| @JsFun("(v) => typeof v") |
| external fun jsTypeOf(v: JsAny?): String |
| |
| @JsFun("(v) => String(v)") |
| external fun jsToString(v: JsAny?): String |
| |
| fun box(): String { |
| val cases = listOf( |
| "", |
| "ASCII", |
| "๐\u0000e\u0301", |
| "ะัะธะฒะตั", |
| "ืฉืืื" |
| ) |
| |
| for ((i, s) in cases.withIndex()) { |
| val jsStr = s.toJsString() |
| val any = jsIdentityAny(jsStr) |
| |
| if (any == null) return "Fail1" |
| |
| val type = jsTypeOf(any) |
| if (type != "string") return "Fail2" |
| |
| val back = jsToString(any) |
| if (back != s) return "Fail3" |
| } |
| |
| return "OK" |
| } |