Auto merge of #103217 - mejrs:track, r=eholk
Track where diagnostics were created. This implements the `-Ztrack-diagnostics` flag, which uses `#[track_caller]` to track where diagnostics are created. It is meant as a debugging tool much like `-Ztreat-err-as-bug`. For example, the following code... ```rust struct A; struct B; fn main(){ let _: A = B; } ``` ...now emits the following error message: ``` error[E0308]: mismatched types --> src\main.rs:5:16 | 5 | let _: A = B; | - ^ expected struct `A`, found struct `B` | | | expected due to this -Ztrack-diagnostics: created at compiler\rustc_infer\src\infer\error_reporting\mod.rs:2275:31 ```
This commit is contained in:
commit
11ebe6512b
42 changed files with 385 additions and 8 deletions
|
@ -69,6 +69,8 @@ impl<'a> DiagnosticDerive<'a> {
|
|||
for @Self
|
||||
where G: rustc_errors::EmissionGuarantee
|
||||
{
|
||||
|
||||
#[track_caller]
|
||||
fn into_diagnostic(
|
||||
self,
|
||||
#handler: &'__diagnostic_handler_sess rustc_errors::Handler
|
||||
|
@ -133,6 +135,7 @@ impl<'a> LintDiagnosticDerive<'a> {
|
|||
let diag = &builder.diag;
|
||||
structure.gen_impl(quote! {
|
||||
gen impl<'__a> rustc_errors::DecorateLint<'__a, ()> for @Self {
|
||||
#[track_caller]
|
||||
fn decorate_lint<'__b>(
|
||||
self,
|
||||
#diag: &'__b mut rustc_errors::DiagnosticBuilder<'__a, ()>
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue