One spelling for an unvalidated builtin arg, and say what the hold buys

float's prep still swallowed ParseFloat's error three lines from the atoi that
had just been changed to report one — two spellings of "parse an arg the check
already validated". atof reports it the same way.

The README paragraph said a reference reaching through an operand is caught,
which the narrowed fence no longer does and should not: it says what the hold
pins instead. Restored the why the trimmed comment in expand had carried.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
M
2026-08-31 15:05:52 +02:00
committed by lilleman-tw
parent 027d5c33fc
commit f949550515
3 changed files with 16 additions and 7 deletions
+4 -3
View File
@@ -365,9 +365,10 @@ the reference sits, including in a field the format renders.
A `{calc()}` operand is held on its own terms too, so the same fence guards it:
`{..cat.net} x 2 = {calc(net * 2, 2)}` names one field two ways and is a load
error, with no path token anywhere. What an operand's draw fixes is the value it
renders, so a reference reaching *through* it is caught as well, while a sibling
its format never renders is free — that sibling is no part of the value.
error, with no path token anywhere. A calc renders its operand whole, so what the
hold pins is that one field — another route conflicts only by naming it. Two
names that merely draw from one source are two draws, as `{word} {word}` is, so
two dice over one `{..die}` are fine.
```text
token {p} renders a level that {p.first} reads a path into; name the fields you want instead