HS: fix null→nil in generator + asyncCheck fixture (+2 tests)
js_expr_to_sx bare-identifier path returned JS "null"/"undefined" as literal symbols; added keyword mapping before the identifier regex. Registered asyncCheck() global (returns true) for async-when test. Regen'd spec file to propagate the null fix. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -1172,7 +1172,7 @@
|
|||||||
))
|
))
|
||||||
(deftest "can call global javascript functions"
|
(deftest "can call global javascript functions"
|
||||||
(hs-cleanup!)
|
(hs-cleanup!)
|
||||||
(host-set! (host-global "window") "calledWith" null)
|
(host-set! (host-global "window") "calledWith" nil)
|
||||||
(let ((_el-div (dom-create-element "div")))
|
(let ((_el-div (dom-create-element "div")))
|
||||||
(dom-set-attr _el-div "_" "on click call globalFunction(\"foo\")")
|
(dom-set-attr _el-div "_" "on click call globalFunction(\"foo\")")
|
||||||
(dom-append (dom-body) _el-div)
|
(dom-append (dom-body) _el-div)
|
||||||
|
|||||||
@@ -399,6 +399,8 @@ globalThis.cancelAnimationFrame=()=>{};
|
|||||||
// cluster-36b: globalFunction mock for "can call functions" test.
|
// cluster-36b: globalFunction mock for "can call functions" test.
|
||||||
// The test calls globalFunction("foo") via hyperscript and checks window.calledWith.
|
// The test calls globalFunction("foo") via hyperscript and checks window.calledWith.
|
||||||
globalThis.globalFunction = function(x) { globalThis.calledWith = x; };
|
globalThis.globalFunction = function(x) { globalThis.calledWith = x; };
|
||||||
|
// asyncCheck: async-when test needs a truthy-returning global (simulates async guard).
|
||||||
|
globalThis.asyncCheck = function() { return true; };
|
||||||
// cluster-asyncError: function that returns a rejected promise.
|
// cluster-asyncError: function that returns a rejected promise.
|
||||||
globalThis.failAsync = function() { return Promise.reject(new Error("boom")); };
|
globalThis.failAsync = function() { return Promise.reject(new Error("boom")); };
|
||||||
// HsMutationObserver — cluster-32 mutation mock. Maintains a global
|
// HsMutationObserver — cluster-32 mutation mock. Maintains a global
|
||||||
|
|||||||
@@ -1881,6 +1881,14 @@ def js_expr_to_sx(expr):
|
|||||||
if m:
|
if m:
|
||||||
return f'(host-get {m.group(1)} "{m.group(2)}")'
|
return f'(host-get {m.group(1)} "{m.group(2)}")'
|
||||||
|
|
||||||
|
# JS keywords / literals
|
||||||
|
if expr in ('null', 'undefined'):
|
||||||
|
return 'nil'
|
||||||
|
if expr == 'true':
|
||||||
|
return 'true'
|
||||||
|
if expr == 'false':
|
||||||
|
return 'false'
|
||||||
|
|
||||||
# Bare identifier
|
# Bare identifier
|
||||||
if re.match(r'^[A-Za-z_]\w*$', expr):
|
if re.match(r'^[A-Za-z_]\w*$', expr):
|
||||||
return expr
|
return expr
|
||||||
|
|||||||
Reference in New Issue
Block a user