summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ports/webassembly/proxy_c.c5
-rw-r--r--ports/webassembly/proxy_js.js7
-rw-r--r--tests/ports/webassembly/py_proxy_to_js.mjs.exp4
-rw-r--r--tests/ports/webassembly/run_python_async.mjs.exp4
4 files changed, 13 insertions, 7 deletions
diff --git a/ports/webassembly/proxy_c.c b/ports/webassembly/proxy_c.c
index 3097d6d3a..f8d6d8530 100644
--- a/ports/webassembly/proxy_c.c
+++ b/ports/webassembly/proxy_c.c
@@ -49,6 +49,7 @@ enum {
};
enum {
+ PROXY_KIND_JS_UNDEFINED = 0,
PROXY_KIND_JS_NULL = 1,
PROXY_KIND_JS_BOOLEAN = 2,
PROXY_KIND_JS_INTEGER = 3,
@@ -78,7 +79,9 @@ static inline mp_obj_t proxy_c_get_obj(uint32_t c_ref) {
}
mp_obj_t proxy_convert_js_to_mp_obj_cside(uint32_t *value) {
- if (value[0] == PROXY_KIND_JS_NULL) {
+ if (value[0] == PROXY_KIND_JS_UNDEFINED) {
+ return mp_const_none;
+ } else if (value[0] == PROXY_KIND_JS_NULL) {
return mp_const_none;
} else if (value[0] == PROXY_KIND_JS_BOOLEAN) {
return mp_obj_new_bool(value[1]);
diff --git a/ports/webassembly/proxy_js.js b/ports/webassembly/proxy_js.js
index 042deb7b0..05d0f2da4 100644
--- a/ports/webassembly/proxy_js.js
+++ b/ports/webassembly/proxy_js.js
@@ -38,6 +38,7 @@ const PROXY_KIND_MP_GENERATOR = 7;
const PROXY_KIND_MP_OBJECT = 8;
const PROXY_KIND_MP_JSPROXY = 9;
+const PROXY_KIND_JS_UNDEFINED = 0;
const PROXY_KIND_JS_NULL = 1;
const PROXY_KIND_JS_BOOLEAN = 2;
const PROXY_KIND_JS_INTEGER = 3;
@@ -109,7 +110,9 @@ function proxy_call_python(target, argumentsList) {
function proxy_convert_js_to_mp_obj_jsside(js_obj, out) {
let kind;
- if (js_obj === null) {
+ if (js_obj === undefined) {
+ kind = PROXY_KIND_JS_UNDEFINED;
+ } else if (js_obj === null) {
kind = PROXY_KIND_JS_NULL;
} else if (typeof js_obj === "boolean") {
kind = PROXY_KIND_JS_BOOLEAN;
@@ -185,7 +188,7 @@ function proxy_convert_mp_to_js_obj_jsside(value) {
}
if (kind === PROXY_KIND_MP_NONE) {
// None
- obj = null;
+ obj = undefined;
} else if (kind === PROXY_KIND_MP_BOOL) {
// bool
obj = Module.getValue(value + 4, "i32") ? true : false;
diff --git a/tests/ports/webassembly/py_proxy_to_js.mjs.exp b/tests/ports/webassembly/py_proxy_to_js.mjs.exp
index 279df7bdf..3fd38c2b5 100644
--- a/tests/ports/webassembly/py_proxy_to_js.mjs.exp
+++ b/tests/ports/webassembly/py_proxy_to_js.mjs.exp
@@ -1,4 +1,4 @@
false 1
true [ 1, 2, 3 ]
-true [ null, true, 1.2 ]
-true { tuple: [ 1, 2, 3 ], one: 1, list: [ null, true, 1.2 ] }
+true [ undefined, true, 1.2 ]
+true { tuple: [ 1, 2, 3 ], one: 1, list: [ undefined, true, 1.2 ] }
diff --git a/tests/ports/webassembly/run_python_async.mjs.exp b/tests/ports/webassembly/run_python_async.mjs.exp
index f441bc5cf..827f853b9 100644
--- a/tests/ports/webassembly/run_python_async.mjs.exp
+++ b/tests/ports/webassembly/run_python_async.mjs.exp
@@ -23,7 +23,7 @@ py 1
setTimeout resolved
resolved value: 123
py 2
-2 null
+2 undefined
= TEST 4 ==========
1
py 1
@@ -35,4 +35,4 @@ py 3
setTimeout B resolved
resolved value: 456
py 4
-2 null
+2 undefined