HS-plan: mark unless modifier blocked

This commit is contained in:
2026-04-23 22:29:48 +00:00
parent ccf59a9882
commit 8268010a0a

View File

@@ -60,7 +60,7 @@ Each cluster below is one commit. Order is rough — a loop agent may skip ahead
13. **[pending] `toggle` multi-class + timed + until-event** — `toggle` (3 assertion-fail tests). Expected: +3.
14. **[in-progress] `unless` modifier** — `unlessModifier / unless can conditionally execute` (1 test). Parser/compiler addition. Expected: +1.
14. **[blocked: parser unless + compiler hs-unless-wrap produces correct compile output but test still fails with `Undefined symbol: _test-result` — some interaction with the test harness's _run-test-thunk + _test-result define. Also needs generator classList.add pattern (which was bundled in). Deferred until harness interaction root-caused.] `unless` modifier** — `unlessModifier / unless can conditionally execute` (1 test). Parser/compiler addition. Expected: +1.
15. **[pending] `transition` query-ref + multi-prop + initial** — `transition` 3 tests. Expected: +2-3.
@@ -158,6 +158,9 @@ Many tests are `SKIP (untranslated)` because `tests/playwright/generate-sx-tests
(Reverse chronological — newest at top.)
### 2026-04-23 — cluster 14 unless modifier (blocked, reverted)
- Attempted: parser `cl-collect` handles `cmd unless cond` by emitting `(hs-unless-wrap cond cmd)`, compiler adds a `hs-unless-wrap` case that translates to `(if (hs-falsy? cond) cmd nil)`. Compile output correct. But test fails with `Undefined symbol: _test-result` suggesting the test-harness thunk eval throws somehow. Also added a generator pattern for `classList.add/remove/toggle` but that alone didn't fix the test. Reverted per abort rule; compile-shape fix looks sound and should be revisited after clusters that don't depend on harness internals.
### 2026-04-23 — cluster 8 select returns selected text (blocked, reverted)
- Attempted: added `hs-get-selection` runtime, compiler branch to rewrite bare `selection` to `(hs-get-selection)`, generator pattern to translate `evaluate(() => { var range = document.createRange(); ...; window.getSelection().addRange(range); })`, and mock support in `hs-run-filtered.js` for `document.createRange` / `window.getSelection` / `firstChild` text node. Tests still returned empty — range.toString() wasn't picking up the text. Reverted per the abort rule. Would need a more faithful mock of DOM text nodes with data propagation.