Skip to content

diagnosis() keeps error: lines and drops error[E0583]:, so the line that names the failure is the one the tool error leaves out #44

Description

@vyncint

Todaydiagnosis() (crates/launchbound-prune/src/runner.rs:140-143) keeps the stderr lines that starts_with("error:"). rustc's primary diagnostics begin error[E0583]: — a code in brackets before the colon — so they do not match, and what survives is cargo's summary line and reconverge's generic hint. Measured against 2.0.0, with the module-directory kernel from #43:

# what rustc printed in the scratch copy
error[E0583]: file not found for module `util`
error: could not compile `reduce-flip` (lib) due to 1 previous error

# what the tool error carries
TOOL ERROR (hard stop): cargo reconverge exited 2:
error: could not compile `reduce-flip` (lib) due to 1 previous error
error: `cargo check` under the reconverge driver failed (see the errors above). If rustc reported real build errors, fix those and rerun; if the driver itself failed to start …

"See the errors above." The one that was above is the one the filter removed.

Why it is worth fixing#19 put this filter in because the tail-six heuristic "reliably picked the wrong six", and the fix was to take the marked lines however far from the end they are. The marker it chose is the secondary form. Every compile error rustc reports carries a code, and a compile error is the common case of a gate tool error on a kernel that has one — so the message the filter was built to preserve is the message it drops, for exactly the class of failure a kernel author actually hits. reconverge's own error: lines — a bad --cc, the setup hint — still come through: the filter works for the analyzer and fails for the compiler.

Fix — accept error followed by either : or [: line.starts_with("error:") || line.starts_with("error["). One line, plus a test beside the_marked_line_is_taken_however_far_from_the_end_it_is that feeds an error[E0583]: line followed by cargo's summary and asserts both survive. Cargo's summary line on its own is never the diagnosis.

Done when — the tool-error detail for a scratch compile failure includes rustc's error[E…]: line(s); the new test passes; #19's test still passes.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workinggood first issueGood for newcomers

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions