From 21c3e951ecf13b2099cb25679f17b6b07ec3bdf9 Mon Sep 17 00:00:00 2001 From: giles Date: Wed, 1 Apr 2026 14:01:37 +0000 Subject: [PATCH] Fix handler lookup: use eval-expr to resolve handler:ex-* symbols env-get requires (env-get env name) with two args but dispatch.sx was calling it with one arg, always returning nil. Now uses eval-expr + make-symbol to resolve the handler binding in the current env, with cek-try fallback to nil. Co-Authored-By: Claude Opus 4.6 (1M context) --- sx/sx/handlers/dispatch.sx | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/sx/sx/handlers/dispatch.sx b/sx/sx/handlers/dispatch.sx index aa2f973c..aa1d4a99 100644 --- a/sx/sx/handlers/dispatch.sx +++ b/sx/sx/handlers/dispatch.sx @@ -3,11 +3,13 @@ (fn (slug) (let - ((handler-key (str "handler:ex-" slug)) (hdef (env-get handler-key))) - (if - (nil? hdef) - (error (str "Handler not found: " handler-key)) - (call-handler hdef))))) + ((handler-key (str "handler:ex-" slug))) + (let + ((hdef (cek-try (fn () (eval-expr (make-symbol handler-key))) (fn (err) nil)))) + (if + (nil? hdef) + (error (str "Handler not found: " handler-key)) + (call-handler hdef)))))) (define call-handler