They are defined in `rustc_query_system` but used in `rustc_query_impl`. This is very much *not* how things are supposed to be done; I suspect someone got lazy and took a shortcut at some point. This commit moves the errors into `rustc_query_impl`. This requires more lines of code to give `rustc_query_impl` an errors module, but it's worthwhile to do things in the normal way instead of a weird exceptional way.
24 lines
692 B
Rust
24 lines
692 B
Rust
use rustc_hir::limit::Limit;
|
|
use rustc_macros::{Diagnostic, Subdiagnostic};
|
|
use rustc_span::{Span, Symbol};
|
|
|
|
#[derive(Diagnostic)]
|
|
#[help(
|
|
"consider increasing the recursion limit by adding a `#![recursion_limit = \"{$suggested_limit}\"]` attribute to your crate (`{$crate_name}`)"
|
|
)]
|
|
#[diag("queries overflow the depth limit!")]
|
|
pub(crate) struct QueryOverflow {
|
|
#[primary_span]
|
|
pub span: Span,
|
|
#[subdiagnostic]
|
|
pub note: QueryOverflowNote,
|
|
pub suggested_limit: Limit,
|
|
pub crate_name: Symbol,
|
|
}
|
|
|
|
#[derive(Subdiagnostic)]
|
|
#[note("query depth increased by {$depth} when {$desc}")]
|
|
pub(crate) struct QueryOverflowNote {
|
|
pub desc: String,
|
|
pub depth: usize,
|
|
}
|