C-c C-c is to report every error in a form, through an error type that absorbs what it causes

This commit is contained in:
Joseph Ferano 2026-09-25 09:37:16 +07:00
parent 92d63e3b36
commit ff89f25e48

View File

@ -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