Fix 30 test failures: OCaml renderer primitives + condition signal rename
OCaml HTML renderer (sx_render.ml) silently returned "" when env_get failed for primitive function calls (str, +, len, etc.) inside HTML elements. The Eval_error catch now falls through to eval_expr which resolves primitives correctly. Fixes 21 rendering tests. Rename condition system special form from "signal" to "signal-condition" in evaluator.sx, matching the OCaml bootstrapped evaluator (sx_ref.ml). This avoids clashing with the reactive signal function. Fixes 9 condition system tests. 1166 passed, 0 failed. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -280,7 +280,10 @@ and render_list_to_html head args env =
|
||||
| _ ->
|
||||
let result = Sx_ref.eval_expr (List (head :: args)) (Env env) in
|
||||
do_render_to_html result env)
|
||||
with Eval_error _ -> "")
|
||||
with Eval_error _ ->
|
||||
(* Symbol not in env — might be a primitive; eval the full expression *)
|
||||
let result = Sx_ref.eval_expr (List (head :: args)) (Env env) in
|
||||
do_render_to_html result env)
|
||||
| _ ->
|
||||
let result = Sx_ref.eval_expr (List (head :: args)) (Env env) in
|
||||
do_render_to_html result env
|
||||
@@ -530,10 +533,13 @@ and render_list_buf buf head args env =
|
||||
| _ ->
|
||||
let result = Sx_ref.eval_expr (List (head :: args)) (Env env) in
|
||||
render_to_buf buf result env)
|
||||
with Eval_error msg ->
|
||||
(* Unknown symbol/component — skip silently during SSR.
|
||||
The client will render from page-sx. *)
|
||||
Printf.eprintf "[ssr-skip] %s\n%!" msg)
|
||||
with Eval_error _ ->
|
||||
(* Symbol not in env — might be a primitive; eval the full expression *)
|
||||
(try
|
||||
let result = Sx_ref.eval_expr (List (head :: args)) (Env env) in
|
||||
render_to_buf buf result env
|
||||
with Eval_error msg ->
|
||||
Printf.eprintf "[ssr-skip] %s\n%!" msg))
|
||||
| _ ->
|
||||
(try
|
||||
let result = Sx_ref.eval_expr (List (head :: args)) (Env env) in
|
||||
|
||||
Reference in New Issue
Block a user