| // TARGET_BACKEND: WASM |
| // WITH_STDLIB |
| |
| fun jsUpper(s: JsString): JsString = js("s.toUpperCase()") |
| fun jsSlice1(s: JsString): JsString = js("s.slice(1)") |
| fun jsConcat(a: JsString, b: JsString): JsString = js("a + b") |
| |
| fun jsIsPrimitiveString(s: JsString): Boolean = js("typeof s === 'string' && !(s instanceof String)") |
| |
| fun box(): String { |
| val s = "Привет🚀\u0000e\u0301" |
| |
| val jsS = s.toJsString() |
| |
| if (!jsIsPrimitiveString(jsS)) return "Fail1" |
| |
| val up = jsUpper(jsS).toString() |
| if (up != "ПРИВЕТ🚀\u0000E\u0301") return "Fail2" |
| |
| val sl = jsSlice1(jsS).toString() |
| if (sl != "ривет🚀\u0000e\u0301") return "Fail3" |
| |
| val joined = jsConcat("<<".toJsString(), jsS).toString() |
| if (joined != "<<$s") return "Fail4" |
| |
| if (jsS.toString() != s) return "Fail5" |
| |
| return "OK" |
| } |