HS: sourceInfo 4/4 + arrayLiteral 8/8 (+5 tests)
Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Failing after 17s

- tokenizer hs-emit!: add :end (max pos, start+len(val)) and :line fields to tokens
- parser hs-parse-ast: wrap fn body in do so set! hs-span-mode executes
- runtime hs-make-object: remove _order key (V8 native insertion order sufficient)
This commit is contained in:
2026-04-26 22:36:03 +00:00
parent 245b097c93
commit 68d81f59a6
6 changed files with 26 additions and 26 deletions

View File

@@ -2999,6 +2999,7 @@
(define hs-parse-ast
(fn (src)
(set! hs-span-mode true)
(let ((result (hs-parse (hs-tokenize src) src)))
(do (set! hs-span-mode false) result))))
(do
(set! hs-span-mode true)
(let ((result (hs-parse (hs-tokenize src) src)))
(do (set! hs-span-mode false) result)))))

View File

@@ -2156,20 +2156,13 @@
(fn
(pairs)
(let
((d {}) (order (list)))
((d {}))
(do
(for-each
(fn
(pair)
(let
((k (first pair)))
(do
(when
(not (dict-has? d k))
(set! order (append order (list k))))
(dict-set! d k (nth pair 1)))))
(dict-set! d (first pair) (nth pair 1)))
pairs)
(when (not (empty? order)) (dict-set! d "_order" order))
d))))
(define

View File

@@ -460,7 +460,13 @@
hs-emit!
(fn
(type value start)
(append! tokens (hs-make-token type value start))))
(let
((tok (hs-make-token type value start))
(end-pos (max pos (+ start (if (nil? value) 0 (len (str value)))))))
(do
(dict-set! tok "end" end-pos)
(dict-set! tok "line" (len (split (slice src 0 start) "\n")))
(append! tokens tok)))))
(define
scan!
(fn

View File

@@ -2999,6 +2999,7 @@
(define hs-parse-ast
(fn (src)
(set! hs-span-mode true)
(let ((result (hs-parse (hs-tokenize src) src)))
(do (set! hs-span-mode false) result))))
(do
(set! hs-span-mode true)
(let ((result (hs-parse (hs-tokenize src) src)))
(do (set! hs-span-mode false) result)))))

View File

@@ -2156,20 +2156,13 @@
(fn
(pairs)
(let
((d {}) (order (list)))
((d {}))
(do
(for-each
(fn
(pair)
(let
((k (first pair)))
(do
(when
(not (dict-has? d k))
(set! order (append order (list k))))
(dict-set! d k (nth pair 1)))))
(dict-set! d (first pair) (nth pair 1)))
pairs)
(when (not (empty? order)) (dict-set! d "_order" order))
d))))
(define

View File

@@ -460,7 +460,13 @@
hs-emit!
(fn
(type value start)
(append! tokens (hs-make-token type value start))))
(let
((tok (hs-make-token type value start))
(end-pos (max pos (+ start (if (nil? value) 0 (len (str value)))))))
(do
(dict-set! tok "end" end-pos)
(dict-set! tok "line" (len (split (slice src 0 start) "\n")))
(append! tokens tok)))))
(define
scan!
(fn