HS: of-expression chain rebase + null-safe/queryRef test fixes

- parser.sx: rebase-of-chain handles property chains like bar.doh of foo → (. (. foo bar) doh)
- generator: MANUAL_TEST_BODIES for null-safe access (host-call-fn wrapper), queryRef no-match, classRef no-match, JS this-binding SKIP
- propertyAccess: 12/12, possessiveExpression: 23/23, queryRef: 13/13

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-05-05 05:31:03 +00:00
parent b14ac6cd70
commit f547ebf43e
4 changed files with 35 additions and 10 deletions

View File

@@ -849,10 +849,20 @@
(adv!)
(let
((target (parse-expr)))
(if
(and (list? left) (= (first left) (quote ref)))
(list (make-symbol ".") target (nth left 1))
(list (quote of) left target)))))
(define
rebase-of-chain
(fn
(chain tgt)
(cond
((and (list? chain) (= (first chain) (quote ref)))
(list (make-symbol ".") tgt (nth chain 1)))
((and (list? chain) (= (str (first chain)) "."))
(list
(make-symbol ".")
(rebase-of-chain (nth chain 1) tgt)
(nth chain 2)))
(true (list (quote of) chain tgt)))))
(rebase-of-chain left target))))
((and (= typ "keyword") (= val "in"))
(do (adv!) (list (quote in?) left (parse-expr))))
((and (= typ "keyword") (= val "does"))