Fix HS browser activation: host-get function sentinel, runtime symbol shadow, lazy dep chain

Three bugs fixed:
1. host-get in sx-platform.js: return true for function-valued properties
   so dom-get-attr/dom-set-attr guards pass (functions can't cross WASM boundary)
2. hs-runtime.sx: renamed host-get→hs-host-get and dom-query→hs-dom-query to
   stop shadowing platform natives when loaded as .sx source
3. compile-modules.js: HS dependency chain (integration→runtime→compiler→parser→tokenizer)
   so lazy loading pulls in all deps. Non-library modules load as .sx source
   for CEK env visibility.

Result: 8/8 elements activate, hs-on attaches listeners. Click handler needs
IO suspension support (VmSuspended in sx_browser.ml) to fire — next step.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-04-09 20:50:10 +00:00
parent 7f273dc7c2
commit c6df054957
7 changed files with 86 additions and 27 deletions

View File

@@ -927,7 +927,9 @@
},
"hs-parser": {
"file": "hs-parser.sxbc",
"deps": [],
"deps": [
"hs-tokenizer"
],
"exports": [
"hs-parse",
"hs-compile"
@@ -935,7 +937,10 @@
},
"hs-compiler": {
"file": "hs-compiler.sxbc",
"deps": [],
"deps": [
"hs-tokenizer",
"hs-parser"
],
"exports": [
"hs-to-sx",
"hs-to-sx-from-source"
@@ -943,7 +948,11 @@
},
"hs-runtime": {
"file": "hs-runtime.sxbc",
"deps": [],
"deps": [
"hs-tokenizer",
"hs-parser",
"hs-compiler"
],
"exports": [
"hs-on",
"hs-on-every",
@@ -982,8 +991,8 @@
"hs-last",
"hs-template",
"hs-make-object",
"host-get",
"dom-query",
"hs-host-get",
"hs-dom-query",
"hs-method-call",
"hs-beep",
"hs-prop-is",
@@ -998,7 +1007,12 @@
},
"hs-integration": {
"file": "hs-integration.sxbc",
"deps": [],
"deps": [
"hs-tokenizer",
"hs-parser",
"hs-compiler",
"hs-runtime"
],
"exports": [
"hs-handler",
"hs-activate!",