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:
commit
324aa5d4ba
20 changed files with 66 additions and 40 deletions
|
|
@ -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`
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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");
|
||||
|
|
|
|||
|
|
@ -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
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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),
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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() {}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue