diff --git a/TODO.org b/TODO.org index 8c55c4ba..8f7a1357 100644 --- a/TODO.org +++ b/TODO.org @@ -1979,7 +1979,8 @@ rebinds all at once. No other form had the gap: =let= was already sequential, =dotimes= binds one name, and =fn=, =defn=, =match= and the handler and restart clauses bind parameters with no initialisers. -** TODO C-c C-c reports one error, not every error in the form +** NEXT C-c C-c reports one error, not every error in the form +Decided 2026-09-25: every error in the form, at any depth. A failed subexpression takes an error type that fits any want, so checking continues around it and the errors it would cause are not reported — Rust's, TypeScript's and Elm's shape. Rules out stopping at a statement boundary. Whole-file paths use =Check.program_all= and report every bad declaration. The daemon asks for the sink off (=lib/loc.ml:185=) and gets one exception, so a function with three bad expressions takes three round trips. The sink is