Skip to content

[COMPILETEST-UNTANGLE 2/N] Make some compiletest errors/warnings/help more visually obvious #143230

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

jieyouxu
Copy link
Member

@jieyouxu jieyouxu commented Jun 30, 2025

This PR makes some compiletest errors/warnings/help more visually obvious. Note that this is only intended to help visually -- the error handling in compiletest is still a mess.

Screenshot 2025-06-30 170010

r? ghost

@rustbot rustbot added A-compiletest Area: The compiletest test runner A-testsuite Area: The testsuite used to check the correctness of rustc T-bootstrap Relevant to the bootstrap subteam: Rust's build system (x.py and src/bootstrap) labels Jun 30, 2025
@Kobzol
Copy link
Contributor

Kobzol commented Jun 30, 2025

r? @Kobzol

The visual changes look great! Maybe we could add another macro, e.g. fatal!, that will do error! + panic!? It seems better than just using the error macro and then an empty panic afterwards, it looks a bit weird.

(you can r=me on the last commit)

@jieyouxu jieyouxu force-pushed the compiletest-maintenance-2 branch from 550c047 to e2ddec0 Compare June 30, 2025 13:23
@jieyouxu
Copy link
Member Author

Added a fatal!() macro which is basically just error!() + panic!().

let status = ::colored::Colorize::bold(status);
eprint!("{status}");
eprintln!($($arg)*);
panic!("fatal error");
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

std::panic::resume_unwind(Box::new(())) would also work to silently panic (no panic message and no backtrace)

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hm right. Though a backtrace might be useful in this case, mostly for panic location?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

(Not that randomly panicking in random places is ideal, but)

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

At least some of the cases of fatal!() are user errors, not bugs in compiletest itself. For user errors backtraces aren't that useful.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Changed to std::panic::resume_unwind(Box::new(())) instead.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Backtraces are useful in general to make debugging easier though, even if it's a user error, users might sometimes want to take a look at compiletest's source code to see what exactly is triggering the panic, and what should they change (it might not always be obvious from the error message).

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That is true. I think I'll retain the explicit panic for the backtrace location at least for now. Eventually, though, I'd like the user error vs compiletest logic bug to be handled differently.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm going with the explicit panic for the short-term.

@jieyouxu jieyouxu force-pushed the compiletest-maintenance-2 branch from e2ddec0 to f86b830 Compare June 30, 2025 13:36
@jieyouxu
Copy link
Member Author

Changed to std::panic::resume_unwind(Box::new(())).

@jieyouxu jieyouxu force-pushed the compiletest-maintenance-2 branch from f86b830 to c3fb7d1 Compare July 1, 2025 05:06
@jieyouxu
Copy link
Member Author

jieyouxu commented Jul 1, 2025

Going with the explicit panic in fatal!() in the short-term.
@bors r=Kobzol rollup

@bors
Copy link
Collaborator

bors commented Jul 1, 2025

📌 Commit c3fb7d1 has been approved by Kobzol

It is now in the queue for this repository.

@bors bors added the S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. label Jul 1, 2025
@jieyouxu jieyouxu marked this pull request as ready for review July 1, 2025 05:09
@rustbot rustbot added the S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. label Jul 1, 2025
@jieyouxu jieyouxu removed the S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. label Jul 1, 2025
@jieyouxu jieyouxu changed the title [STACKED] [COMPILETEST-UNTANGLE 2/N] Make some compiletest errors/warnings/help more visually obvious [COMPILETEST-UNTANGLE 2/N] Make some compiletest errors/warnings/help more visually obvious Jul 1, 2025
GuillaumeGomez added a commit to GuillaumeGomez/rust that referenced this pull request Jul 1, 2025
…, r=Kobzol

[COMPILETEST-UNTANGLE 2/N] Make some compiletest errors/warnings/help more visually obvious

This PR makes some compiletest errors/warnings/help more visually obvious. Note that this is only intended to help visually -- the error handling in compiletest is still a mess.

![Screenshot 2025-06-30 170010](https://github.com/user-attachments/assets/a56b7857-1926-48f8-a309-9e7fcf84df7f)

r? ghost
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-compiletest Area: The compiletest test runner A-testsuite Area: The testsuite used to check the correctness of rustc S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. T-bootstrap Relevant to the bootstrap subteam: Rust's build system (x.py and src/bootstrap)
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants