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>
This commit is contained in:
2026-04-15 11:29:01 +00:00
parent a93e5924df
commit 4f02f82f4e
377 changed files with 9517 additions and 8694 deletions

View File

@@ -0,0 +1,20 @@
(defcomp
(&key tests test-count)
(div
(~tw :tokens "mt-2")
(div
(~tw :tokens "flex items-center gap-1")
(span (~tw :tokens "text-xs font-medium text-stone-500") "Tests")
(span
(~tw :tokens "text-xs px-1.5 py-0.5 rounded bg-violet-100 text-violet-700")
(str test-count)))
(ul
(~tw :tokens "mt-1 text-xs text-stone-500 list-none")
(map
(fn
(t)
(li
(~tw :tokens "flex items-center gap-1")
(span (~tw :tokens "text-green-500 text-xs") "●")
(get t "name")))
tests))))