Compare commits
2 Commits
f715d23e10
...
11917f1bfa
| Author | SHA1 | Date | |
|---|---|---|---|
| 11917f1bfa | |||
| 875e9ba317 |
@@ -1547,7 +1547,17 @@
|
||||
(emit-set
|
||||
tgt
|
||||
(list (quote hs-empty-like) (hs-to-sx tgt))))
|
||||
(true (list (quote hs-empty-target!) (hs-to-sx tgt))))))
|
||||
(true
|
||||
(if
|
||||
(and (list? tgt) (= (first tgt) (quote query)))
|
||||
(list
|
||||
(quote for-each)
|
||||
(list
|
||||
(quote fn)
|
||||
(list (quote _el))
|
||||
(list (quote hs-empty-target!) (quote _el)))
|
||||
(list (quote hs-query-all) (nth tgt 1)))
|
||||
(list (quote hs-empty-target!) (hs-to-sx tgt)))))))
|
||||
((= head (quote open-element))
|
||||
(list (quote hs-open!) (hs-to-sx (nth ast 1))))
|
||||
((= head (quote close-element))
|
||||
|
||||
@@ -4,10 +4,10 @@ Live tally for `plans/hs-conformance-to-100.md`. Update after every cluster comm
|
||||
|
||||
```
|
||||
Baseline: 1213/1496 (81.1%)
|
||||
Merged: 1309/1496 (87.5%) delta +96
|
||||
Merged: 1310/1496 (87.6%) delta +97
|
||||
Worktree: all landed
|
||||
Target: 1496/1496 (100.0%)
|
||||
Remaining: ~193 tests (clusters 17/29(partial)/31 blocked; 33/34 partial)
|
||||
Remaining: ~192 tests (clusters 17/29(partial)/31 blocked; 33/34 partial)
|
||||
```
|
||||
|
||||
## Cluster ledger
|
||||
@@ -85,6 +85,7 @@ Defer until A–D drain. Estimated ~25 recoverable tests.
|
||||
| # | Cluster | Status | Δ | Commit |
|
||||
|---|---------|--------|---|--------|
|
||||
| F1 | add CSS template interpolation | done | +1 | 5a76a040 |
|
||||
| F2 | empty multi-element (query→for-each) | done | +1 | 875e9ba3 |
|
||||
|
||||
## Buckets roll-up
|
||||
|
||||
|
||||
@@ -177,6 +177,9 @@ Many tests are `SKIP (untranslated)` because `tests/playwright/generate-sx-tests
|
||||
|
||||
## Progress log
|
||||
|
||||
### 2026-04-26 — Bucket F: empty multi-element fix (+1)
|
||||
- **875e9ba3** — `HS: empty multi-element fix (+1 test)`. `empty .class` compiled `(empty-target (query ".class"))` through `hs-to-sx` → `(hs-empty-target! (hs-query-first ".class"))` which only emptied the first match. Fix: detect `(query ...)` target in the `empty-target` compiler case and emit `(for-each (fn (_el) (hs-empty-target! _el)) (hs-query-all sel))`, mirroring the `add-class` pattern. Suite hs-upstream-empty: 12/13 → 13/13. Smoke 0-195: 175/195 unchanged.
|
||||
|
||||
### 2026-04-26 — Bucket F: add CSS template interpolation (+1)
|
||||
- **5a76a040** — `HS: add CSS template interpolation fix (+1 test)`. `add {color: ${}{"red"}}` uses two consecutive brace groups: the empty `${}` marker followed by `{"red"}` for the actual value. The prior parser fix called `parse-expr` when already at the closing `}` of the empty group, returning nil. Fix: detect the empty-brace case (`brace-open` → immediately `brace-close`), skip it, then read the actual value from the next `{…}` block. Also handles normal `${expr}` correctly. Suite hs-upstream-add: 17/19 → 18/19. Smoke 0-195: 174/195 → 175/195.
|
||||
|
||||
|
||||
@@ -1547,7 +1547,17 @@
|
||||
(emit-set
|
||||
tgt
|
||||
(list (quote hs-empty-like) (hs-to-sx tgt))))
|
||||
(true (list (quote hs-empty-target!) (hs-to-sx tgt))))))
|
||||
(true
|
||||
(if
|
||||
(and (list? tgt) (= (first tgt) (quote query)))
|
||||
(list
|
||||
(quote for-each)
|
||||
(list
|
||||
(quote fn)
|
||||
(list (quote _el))
|
||||
(list (quote hs-empty-target!) (quote _el)))
|
||||
(list (quote hs-query-all) (nth tgt 1)))
|
||||
(list (quote hs-empty-target!) (hs-to-sx tgt)))))))
|
||||
((= head (quote open-element))
|
||||
(list (quote hs-open!) (hs-to-sx (nth ast 1))))
|
||||
((= head (quote close-element))
|
||||
|
||||
Reference in New Issue
Block a user