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:
@@ -382,9 +382,16 @@ for (const file of FILES) {
|
||||
const defines = extractDefines(src);
|
||||
if (defines.length > 0) {
|
||||
const key = file.replace(/\.sx$/, '');
|
||||
// HS modules form a dependency chain — loading one loads all predecessors.
|
||||
const HS_DEPS = {
|
||||
'hs-parser': ['hs-tokenizer'],
|
||||
'hs-compiler': ['hs-tokenizer', 'hs-parser'],
|
||||
'hs-runtime': ['hs-tokenizer', 'hs-parser', 'hs-compiler'],
|
||||
'hs-integration': ['hs-tokenizer', 'hs-parser', 'hs-compiler', 'hs-runtime'],
|
||||
};
|
||||
manifest[key] = {
|
||||
file: sxbcFile,
|
||||
deps: [],
|
||||
deps: HS_DEPS[key] || [],
|
||||
exports: defines,
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user