| // WITH_STDLIB |
| |
| // FILE: externals.js |
| |
| function roundTrip(x) { return x; } |
| |
| // FILE: externals.kt |
| |
| external fun roundTrip(x: EI?): EI? |
| |
| fun assertTrue(x: Boolean) { |
| if (!x) error("assertTrue fail") |
| } |
| |
| fun assertFalse(x: Boolean) { |
| if (x) error("assertFalse fail") |
| } |
| |
| external interface EI |
| |
| fun getNull(): EI? = |
| js("null") |
| |
| fun getUndefined(): EI? = |
| js("undefined") |
| |
| // https://youtrack.jetbrains.com/issue/KT-59294/WASM-localStorage-Cannot-read-properties-of-undefined-reading-length |
| fun getStringUndefined(): String? = |
| js("undefined") |
| |
| fun isJsNull(ref: EI?): Boolean = |
| js("ref === null") |
| |
| fun isJsUndefined(ref: EI?): Boolean = |
| js("ref === undefined") |
| |
| fun box(): String { |
| val jsNull = getNull() |
| val jsUndefined = getUndefined() |
| |
| assertTrue(jsNull == null) |
| assertTrue((jsNull as Any?) == null) |
| assertTrue((jsNull as Any?) === null) |
| assertTrue(jsUndefined == null) |
| assertTrue(getStringUndefined() == null) |
| |
| assertTrue(isJsNull(null)) |
| assertTrue(isJsNull(null as EI?)) |
| assertTrue(isJsNull(null as? EI?)) |
| assertTrue(isJsNull(roundTrip(null))) |
| assertTrue(isJsNull(jsNull)) |
| |
| assertFalse(isJsUndefined(null)) |
| |
| return "OK" |
| } |