Add render-active? gate to JS platform, fix parity test for &rest
- JS platform: add renderActiveP/setRenderActiveB + RENAMES for render-active?/set-render-active! so eval-list gate works in browser - Rebuild sx-browser.js from updated spec - Fix test_rest_params: &rest not supported in bare lambda (spec-correct) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -189,6 +189,8 @@ class JSEmitter:
|
||||
"eval-call": "evalCall",
|
||||
"is-render-expr?": "isRenderExpr",
|
||||
"render-expr": "renderExpr",
|
||||
"render-active?": "renderActiveP",
|
||||
"set-render-active!": "setRenderActiveB",
|
||||
"call-lambda": "callLambda",
|
||||
"call-component": "callComponent",
|
||||
"parse-keyword-args": "parseKeywordArgs",
|
||||
@@ -2497,10 +2499,17 @@ PLATFORM_JS_PRE = '''
|
||||
// Render dispatch — call the active adapter's render function.
|
||||
// Set by each adapter when loaded; defaults to identity (no rendering).
|
||||
var _renderExprFn = null;
|
||||
|
||||
// Render mode flag — set by render-to-html/aser, checked by eval-list.
|
||||
// When false, render expressions fall through to evalCall.
|
||||
var _renderMode = false;
|
||||
function renderActiveP() { return _renderMode; }
|
||||
function setRenderActiveB(val) { _renderMode = !!val; }
|
||||
|
||||
function renderExpr(expr, env) {
|
||||
if (_renderExprFn) return _renderExprFn(expr, env);
|
||||
// No adapter loaded — just return the expression as-is
|
||||
return expr;
|
||||
// No adapter loaded — fall through to evalCall
|
||||
return evalCall(first(expr), rest(expr), env);
|
||||
}
|
||||
|
||||
function stripPrefix(s, prefix) {
|
||||
|
||||
Reference in New Issue
Block a user