preload: a bank named 808bd killed the whole plan, and the checker said ok
Last night's WORD fix made five banks visible for the first time — 808bd,
808cy, 808hc, 808sd, 90s_synatm — and the emitter wrote them as `\808bd`.
A SuperCollider bare symbol cannot start with a digit, so preload.scd died
at parse time and warmed 0 banks where it had warmed 132 the day before:
ERROR: syntax error, unexpected NAME, expecting ']'
[ \808bd, 25, ".../Dirt-Samples/808bd" ],
ERROR: Command line parse failed
One bad row costs the whole file, and nothing in the rig says so — with
doNotReadYet restored to true, all 132 banks just fall back to lazy reads.
It was only visible in the boot journal.
Quoting is the fix: '808bd' and \808bd are the same symbol, and only names
that need quoting get one, so an existing plan diffs by exactly the broken
rows. Now 137/137 banks warm in 3.8 s.
Fixing it exposed the second half. The row shape had four readers and
writers — emit_sc, check-preload's union_plan, and its banks()/bank_counts()
shell greps for `[ \name`, which cannot match a quoted row. So the checker
reported ok on a plan genuinely short by five banks: want came out 132
instead of 137. A checker that cannot read what the emitter writes is worse
than no checker, so all four now go through plan_row / plan_row_name /
plan_rows, and the shape is written down once.
43 new tests, and they were watched failing: with the quoting reverted, 21
of them break and check-preload goes blind again.
Showing
tools/tests/test_preload_plan.py
0 → 100755
Please
register
or
sign in
to comment