5b1: the error's source position #44

Merged
lilleman merged 5 commits from error-source-position into main 2026-09-03 17:31:30 +02:00
2 changed files with 16 additions and 8 deletions
Showing only changes of commit 51009ac3f6 - Show all commits
+15
View File
@@ -392,3 +392,18 @@ Under **3 — `markdownToAdf` (`0.1.0`)**:
**Settled** (the maintainer, 2026-09-01): ADF's own `A` is "Atlassian", and "converter" is **Settled** (the maintainer, 2026-09-01): ADF's own `A` is "Atlassian", and "converter" is
the one-way lossy tool §2 exists to replace, where a codec is both directions. It names the the one-way lossy tool §2 exists to replace, where a codec is both directions. It names the
hub, not the formats around it. hub, not the formats around it.
- [x] **5b1 — The error's source position.** A parse error names an ADF path into a document the
caller does not hold yet — `unmappable-html` at `["content", 5]` for a `<span>` on line
12 — and no coordinate into the markdown string it passed in. `ConvertError` gains an
optional `position` the parser carries to every parse-side mint, and the README's published
shape gains it.
**Settled** (the maintainer, 2026-09-03): the position is the parse side's alone — an
emitter has no source string to point into, so emit-side errors keep `path` unchanged. The
representation and where the position is captured are implementation judgment.
The block walk mints it and the node walk attaches it as results return, one call in
`blockNodes`, so the innermost block wins and the emitter's own refusals — which the
parser re-enters for the CommonMark spelling — get an input coordinate too. Line endings
stay as the input spells them, so an offset indexes the string the caller passed rather
than a normalized copy of it. §8 records both framings the review settled beside it:
`unsupported-node-shape` stays one code across the two directions, and `unmappable-html`
names the version rather than the element.
+1 -8
View File
@@ -145,14 +145,7 @@ The numbering is the order the work was planned in, not the order it ships.
README documenting no part of it. The sub-items are that read's answers, and they land before README documenting no part of it. The sub-items are that read's answers, and they land before
5 because §8 freezes the code list at `0.1.0` and 5b3's table is what reads the list before 5 because §8 freezes the code list at `0.1.0` and 5b3's table is what reads the list before
the freeze closes it. the freeze closes it.
- [ ] **5b1 — The error's source position.** A parse error names an ADF path into a document the - [x] **5b1 — The error's source position.**
caller does not hold yet — `unmappable-html` at `["content", 5]` for a `<span>` on line
12 — and no coordinate into the markdown string it passed in. `ConvertError` gains an
optional `position` the parser carries to every parse-side mint, and the README's published
shape gains it.
**Settled** (the maintainer, 2026-09-03): the position is the parse side's alone — an
emitter has no source string to point into, so emit-side errors keep `path` unchanged. The
representation and where the position is captured are implementation judgment.
- [ ] **5b2 — The error messages.** Most state the rule and leave the violation to be inferred — - [ ] **5b2 — The error messages.** Most state the rule and leave the violation to be inferred —
`a text node holds text` for a node holding none — so `rule: violation` becomes house style `a text node holds text` for a node holding none — so `rule: violation` becomes house style
across the sites that do. `not-an-adf-document` gives one sentence of eight words to `null`, across the sites that do. `not-an-adf-document` gives one sentence of eight words to `null`,