Stable extension point for definition-form? — no monkey-patching

Replace the fragile pattern of capturing and wrapping definition-form?
with a mutable *definition-form-extensions* list in render.sx. Web
modules append names to this list instead of redefining the function.
Survives spec reloads without losing registrations.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-03-24 10:06:05 +00:00
parent 8a08de26cd
commit 2a9a4b41bd
3 changed files with 20 additions and 16 deletions

View File

@@ -71,11 +71,16 @@
;; Shared utilities
;; --------------------------------------------------------------------------
;; Extension point for definition forms — modules append names here.
;; Survives spec reloads (no function wrapping needed).
(define *definition-form-extensions* (list))
(define definition-form? :effects []
(fn ((name :as string))
(or (= name "define") (= name "defcomp") (= name "defisland")
(= name "defmacro") (= name "defstyle")
(= name "deftype") (= name "defeffect"))))
(= name "deftype") (= name "defeffect")
(contains? *definition-form-extensions* name))))
(define parse-element-args :effects [render]