summaryrefslogtreecommitdiff
path: root/ports/webassembly/objpyproxy.js
diff options
context:
space:
mode:
authorAndrea Giammarchi <andrea.giammarchi@gmail.com>2025-07-02 18:54:21 +0200
committerDamien George <damien@micropython.org>2025-07-04 15:08:03 +1000
commite33a0f4682374faadc0a6ef5bb02b16bcc3f2d88 (patch)
treeb5924bb0c86d41e25882bd0b5058faf8e364be0a /ports/webassembly/objpyproxy.js
parent16f9d7fdc3b97aad9613b95e3258844ef722af5c (diff)
webassembly/objpyproxy: Avoid throwing on symbol or iterator has-check.
JavaScript code uses "Symbol in object" to brand check its own proxies, and such checks should also work on the Python side. Signed-off-by: Andrea Giammarchi <andrea.giammarchi@gmail.com>
Diffstat (limited to 'ports/webassembly/objpyproxy.js')
-rw-r--r--ports/webassembly/objpyproxy.js6
1 files changed, 6 insertions, 0 deletions
diff --git a/ports/webassembly/objpyproxy.js b/ports/webassembly/objpyproxy.js
index 3b94f8aad..0eafd0dec 100644
--- a/ports/webassembly/objpyproxy.js
+++ b/ports/webassembly/objpyproxy.js
@@ -148,6 +148,12 @@ const py_proxy_handler = {
};
},
has(target, prop) {
+ // avoid throwing on `Symbol() in proxy` checks
+ if (typeof prop !== "string") {
+ // returns true only on iterator because other
+ // symbols are not considered in the `get` trap
+ return prop === Symbol.iterator;
+ }
return Module.ccall(
"proxy_c_to_js_has_attr",
"number",