Rollup merge of #143286 - Muscraft:track-diagnostics-note, r=WaffleLapkin

Make -Ztrack-diagnostics emit like a note

[#t-compiler/diagnostics > Rendering -Ztrack-diagnostics like a note](https://rust-lang.zulipchat.com/#narrow/channel/147480-t-compiler.2Fdiagnostics/topic/Rendering.20-Ztrack-diagnostics.20like.20a.20note/with/526608647)

As discussed on the Zulip thread above, I want to make `-Ztrack-diagnostics` emit like a `note`. This is because I find its current output jarring, and the fact that it gets rendered completely left-aligned, [even in the middle of a snippet](86e05cd300/tests/ui/track-diagnostics/track6.stderr), seems like something that should be changed. Turning it into a `note` seems like the best choice, as it would align it with the rest of the output, and `note` is already used for somewhat similar things, like seeing why a lint was fired.

---

Note: turning `-Ztrack-diagnostics` into a `note` will also make `annotate-snippets` API a bit cleaner
This commit is contained in:
Matthias Krüger 2025-07-04 16:22:35 +02:00 committed by GitHub
commit 324aa5d4ba
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
20 changed files with 66 additions and 40 deletions

View file

@ -1,5 +1,4 @@
//@ compile-flags: -Z track-diagnostics
//@ error-pattern: created at
// Normalize the emitted location so this doesn't need
// updating everytime someone adds or removes a line.
@ -8,4 +7,7 @@
struct A;
struct B;
pub const S: A = B; //~ ERROR mismatched types
pub const S: A = B;
//~^ ERROR mismatched types
//~| NOTE created at
//~| NOTE expected `A`, found `B`

View file

@ -3,7 +3,8 @@ error[E0308]: mismatched types
|
LL | pub const S: A = B;
| ^ expected `A`, found `B`
-Ztrack-diagnostics: created at compiler/rustc_trait_selection/src/error_reporting/infer/mod.rs:LL:CC
|
= note: -Ztrack-diagnostics: created at compiler/rustc_trait_selection/src/error_reporting/infer/mod.rs:LL:CC
error: aborting due to 1 previous error

View file

@ -1,5 +1,5 @@
//@ compile-flags: -Z track-diagnostics
//@ error-pattern: created at
//@ dont-require-annotations: NOTE
//@ rustc-env:RUST_BACKTRACE=0
//@ failure-status: 101
@ -16,6 +16,9 @@
fn main() {
break rust
//~^ ERROR cannot find value `rust` in this scope
//~| NOTE created at
//~| ERROR `break` outside of a loop or labeled block
//~| NOTE created at
//~| ERROR It looks like you're trying to break rust; would you like some ICE?
//~| NOTE created at
}

View file

@ -3,22 +3,24 @@ error[E0425]: cannot find value `rust` in this scope
|
LL | break rust
| ^^^^ not found in this scope
-Ztrack-diagnostics: created at compiler/rustc_resolve/src/late/diagnostics.rs:LL:CC
|
= note: -Ztrack-diagnostics: created at compiler/rustc_resolve/src/late/diagnostics.rs:LL:CC
error[E0268]: `break` outside of a loop or labeled block
--> $DIR/track.rs:LL:CC
|
LL | break rust
| ^^^^^^^^^^ cannot `break` outside of a loop or labeled block
-Ztrack-diagnostics: created at compiler/rustc_hir_typeck/src/loops.rs:LL:CC
|
= note: -Ztrack-diagnostics: created at compiler/rustc_hir_typeck/src/loops.rs:LL:CC
error: internal compiler error: It looks like you're trying to break rust; would you like some ICE?
--> $DIR/track.rs:LL:CC
|
LL | break rust
| ^^^^^^^^^^
-Ztrack-diagnostics: created at compiler/rustc_hir_typeck/src/lib.rs:LL:CC
|
= note: -Ztrack-diagnostics: created at compiler/rustc_hir_typeck/src/lib.rs:LL:CC
= note: the compiler expectedly panicked. this is a feature.
= note: we would appreciate a joke overview: https://github.com/rust-lang/rust/issues/43162#issuecomment-320764675
= note: rustc $VERSION running on $TARGET

View file

@ -1,10 +1,12 @@
//@ compile-flags: -Z track-diagnostics
//@ error-pattern: created at
//@ dont-require-annotations: NOTE
// Normalize the emitted location so this doesn't need
// updating everytime someone adds or removes a line.
//@ normalize-stderr: ".rs:\d+:\d+" -> ".rs:LL:CC"
fn main() {
let _moved @ _from = String::from("foo"); //~ ERROR use of moved value
let _moved @ _from = String::from("foo");
//~^ ERROR use of moved value
//~| NOTE created at
}

View file

@ -6,8 +6,8 @@ LL | let _moved @ _from = String::from("foo");
| | |
| | value moved here
| value used here after move
-Ztrack-diagnostics: created at compiler/rustc_borrowck/src/borrowck_errors.rs:LL:CC
|
= note: -Ztrack-diagnostics: created at compiler/rustc_borrowck/src/borrowck_errors.rs:LL:CC
help: borrow this binding in the pattern to avoid moving the value
|
LL | let ref _moved @ ref _from = String::from("foo");

View file

@ -1,5 +1,5 @@
//@ compile-flags: -Z track-diagnostics
//@ error-pattern: created at
//@ dont-require-annotations: NOTE
// Normalize the emitted location so this doesn't need
// updating everytime someone adds or removes a line.
@ -8,5 +8,7 @@
fn main() {
let _unimported = Blah { field: u8 };
//~^ ERROR cannot find struct, variant or union type `Blah` in this scope
//~| NOTE created at
//~| ERROR expected value, found builtin type `u8`
//~| NOTE created at
}

View file

@ -3,14 +3,16 @@ error[E0422]: cannot find struct, variant or union type `Blah` in this scope
|
LL | let _unimported = Blah { field: u8 };
| ^^^^ not found in this scope
-Ztrack-diagnostics: created at compiler/rustc_resolve/src/late/diagnostics.rs:LL:CC
|
= note: -Ztrack-diagnostics: created at compiler/rustc_resolve/src/late/diagnostics.rs:LL:CC
error[E0423]: expected value, found builtin type `u8`
--> $DIR/track3.rs:LL:CC
|
LL | let _unimported = Blah { field: u8 };
| ^^ not a value
-Ztrack-diagnostics: created at compiler/rustc_resolve/src/late/diagnostics.rs:LL:CC
|
= note: -Ztrack-diagnostics: created at compiler/rustc_resolve/src/late/diagnostics.rs:LL:CC
error: aborting due to 2 previous errors

View file

@ -1,11 +1,13 @@
//@ compile-flags: -Z track-diagnostics
//@ error-pattern: created at
//@ dont-require-annotations: NOTE
// Normalize the emitted location so this doesn't need
// updating everytime someone adds or removes a line.
//@ normalize-stderr: ".rs:\d+:\d+" -> ".rs:LL:CC"
pub onion { //~ ERROR missing `enum` for enum definition
pub onion {
//~^ ERROR missing `enum` for enum definition
//~| NOTE created at
Owo(u8),
Uwu(i8),
}

View file

@ -3,8 +3,8 @@ error: missing `enum` for enum definition
|
LL | pub onion {
| ^^^^^^^^^
-Ztrack-diagnostics: created at compiler/rustc_parse/src/parser/item.rs:LL:CC
|
= note: -Ztrack-diagnostics: created at compiler/rustc_parse/src/parser/item.rs:LL:CC
help: add `enum` here to parse `onion` as an enum
|
LL | pub enum onion {

View file

@ -1,8 +1,10 @@
//@ compile-flags: -Z track-diagnostics
//@ error-pattern: created at
//@ dont-require-annotations: NOTE
// Normalize the emitted location so this doesn't need
// updating everytime someone adds or removes a line.
//@ normalize-stderr: ".rs:\d+:\d+" -> ".rs:LL:CC"
} //~ ERROR unexpected closing delimiter: `}`
}
//~^ ERROR unexpected closing delimiter: `}`
//~| NOTE created at

View file

@ -3,7 +3,8 @@ error: unexpected closing delimiter: `}`
|
LL | }
| ^ unexpected closing delimiter
-Ztrack-diagnostics: created at compiler/rustc_parse/src/lexer/tokentrees.rs:LL:CC
|
= note: -Ztrack-diagnostics: created at compiler/rustc_parse/src/lexer/tokentrees.rs:LL:CC
error: aborting due to 1 previous error

View file

@ -1,5 +1,5 @@
//@ compile-flags: -Z track-diagnostics
//@ error-pattern: created at
//@ dont-require-annotations: NOTE
// Normalize the emitted location so this doesn't need
// updating everytime someone adds or removes a line.
@ -11,7 +11,9 @@ pub trait Foo {
}
impl <T> Foo for T {
default fn bar() {} //~ ERROR specialization is unstable
default fn bar() {}
//~^ ERROR specialization is unstable
//~| NOTE created at
}
fn main() {}

View file

@ -3,8 +3,8 @@ error[E0658]: specialization is unstable
|
LL | default fn bar() {}
| ^^^^^^^^^^^^^^^^^^^
-Ztrack-diagnostics: created at compiler/rustc_ast_passes/src/feature_gate.rs:LL:CC
|
= note: -Ztrack-diagnostics: created at compiler/rustc_ast_passes/src/feature_gate.rs:LL:CC
= note: see issue #31844 <https://github.com/rust-lang/rust/issues/31844> for more information
= help: add `#![feature(specialization)]` to the crate attributes to enable
= note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date