[KT-59294] [wasm] Resolve undefined to null for any nullable types in external functions
This commit is contained in:
committed by
teamcity
parent
ef6dcd9779
commit
eb7805baf9
+4
-8
@@ -328,14 +328,10 @@ class JsInteropFunctionsLowering(val context: WasmBackendContext) : DeclarationT
|
|||||||
)
|
)
|
||||||
} else { //nullable reference should not be checked
|
} else { //nullable reference should not be checked
|
||||||
val nullableValueAdapter = valueAdapter?.let(::NullOrAdapter)
|
val nullableValueAdapter = valueAdapter?.let(::NullOrAdapter)
|
||||||
if (isExternalType(notNullType)) {
|
val undefinedToNullAdapter = FunctionBasedAdapter(adapters.jsCheckIsNullOrUndefinedAdapter.owner)
|
||||||
val undefinedToNullAdapter = FunctionBasedAdapter(adapters.jsCheckIsNullOrUndefinedAdapter.owner)
|
nullableValueAdapter
|
||||||
nullableValueAdapter
|
?.let { CombineAdapter(it, undefinedToNullAdapter) }
|
||||||
?.let { CombineAdapter(it, undefinedToNullAdapter) }
|
?: undefinedToNullAdapter
|
||||||
?: undefinedToNullAdapter
|
|
||||||
} else {
|
|
||||||
nullableValueAdapter
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -25,6 +25,10 @@ fun getNull(): EI? =
|
|||||||
fun getUndefined(): EI? =
|
fun getUndefined(): EI? =
|
||||||
js("undefined")
|
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 =
|
fun isJsNull(ref: EI?): Boolean =
|
||||||
js("ref === null")
|
js("ref === null")
|
||||||
|
|
||||||
@@ -55,6 +59,7 @@ fun box(): String {
|
|||||||
assertTrue((jsNull as Any?) == null)
|
assertTrue((jsNull as Any?) == null)
|
||||||
assertTrue((jsNull as Any?) === null)
|
assertTrue((jsNull as Any?) === null)
|
||||||
assertTrue(jsUndefined == null)
|
assertTrue(jsUndefined == null)
|
||||||
|
assertTrue(getStringUndefined() == null)
|
||||||
|
|
||||||
assertTrue(isJsNull(null))
|
assertTrue(isJsNull(null))
|
||||||
assertTrue(isJsNull(null as EI?))
|
assertTrue(isJsNull(null as EI?))
|
||||||
|
|||||||
@@ -1,4 +1,3 @@
|
|||||||
// IGNORE_BACKEND: WASM
|
|
||||||
// EXPECTED_REACHABLE_NODES: 1281
|
// EXPECTED_REACHABLE_NODES: 1281
|
||||||
package foo
|
package foo
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user