Files
rose-ash/sx/sx/spec-introspect/spec-form-name.sx
giles 4f02f82f4e HS parser: fix number+comparison keyword collision, eval-hs uses hs-compile
Parser: skip unit suffix when next ident is a comparison keyword
(starts, ends, contains, matches, is, does, in, precedes, follows).
Fixes "123 starts with '12'" returning "123starts" instead of true.

eval-hs: use hs-compile directly instead of hs-to-sx-from-source with
"return " prefix, which was causing the parser to consume the comparison
as a string suffix.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-15 11:29:01 +00:00

15 lines
455 B
Plaintext

(define spec-form-name
(fn
(form)
(if
(< (len form) 2)
nil
(let
((head (symbol-name (first form))) (name-part (nth form 1)))
(cond
(= head "define")
(if (= (type-of name-part) "symbol") (symbol-name name-part) nil)
(or (= head "defcomp") (= head "defisland") (= head "defmacro"))
(if (= (type-of name-part) "symbol") (symbol-name name-part) nil)
:else nil)))))