[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
|
||||
val nullableValueAdapter = valueAdapter?.let(::NullOrAdapter)
|
||||
if (isExternalType(notNullType)) {
|
||||
val undefinedToNullAdapter = FunctionBasedAdapter(adapters.jsCheckIsNullOrUndefinedAdapter.owner)
|
||||
nullableValueAdapter
|
||||
?.let { CombineAdapter(it, undefinedToNullAdapter) }
|
||||
?: undefinedToNullAdapter
|
||||
} else {
|
||||
nullableValueAdapter
|
||||
}
|
||||
val undefinedToNullAdapter = FunctionBasedAdapter(adapters.jsCheckIsNullOrUndefinedAdapter.owner)
|
||||
nullableValueAdapter
|
||||
?.let { CombineAdapter(it, undefinedToNullAdapter) }
|
||||
?: undefinedToNullAdapter
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -25,6 +25,10 @@ fun getNull(): EI? =
|
||||
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")
|
||||
|
||||
@@ -55,6 +59,7 @@ fun box(): String {
|
||||
assertTrue((jsNull as Any?) == null)
|
||||
assertTrue((jsNull as Any?) === null)
|
||||
assertTrue(jsUndefined == null)
|
||||
assertTrue(getStringUndefined() == null)
|
||||
|
||||
assertTrue(isJsNull(null))
|
||||
assertTrue(isJsNull(null as EI?))
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
// IGNORE_BACKEND: WASM
|
||||
// EXPECTED_REACHABLE_NODES: 1281
|
||||
package foo
|
||||
|
||||
|
||||
Reference in New Issue
Block a user