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 (define hs-parse-ast
(fn (src) (fn (src)
(set! hs-span-mode true) (do
(let ((result (hs-parse (hs-tokenize src) src))) (set! hs-span-mode true)
(do (set! hs-span-mode false) result)))) (let ((result (hs-parse (hs-tokenize src) src)))
(do (set! hs-span-mode false) result)))))

View File

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

View File

@@ -460,7 +460,13 @@
hs-emit! hs-emit!
(fn (fn
(type value start) (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 (define
scan! scan!
(fn (fn

View File

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

View File

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

View File

@@ -460,7 +460,13 @@
hs-emit! hs-emit!
(fn (fn
(type value start) (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 (define
scan! scan!
(fn (fn