1 use rustc_errors::AddSubdiagnostic;
4 pub struct CycleStack {
9 impl AddSubdiagnostic for CycleStack {
10 fn add_to_diagnostic(self, diag: &mut rustc_errors::Diagnostic) {
11 diag.span_note(self.span, &format!("...which requires {}...", self.desc));
15 #[derive(Copy, Clone)]
16 pub enum HandleCycleError {
22 #[derive(SessionSubdiagnostic)]
24 #[note(query_system::cycle_stack_single)]
26 #[note(query_system::cycle_stack_multiple)]
30 #[derive(SessionSubdiagnostic)]
32 #[note(query_system::cycle_recursive_ty_alias)]
33 #[help(query_system::cycle_recursive_ty_alias_help1)]
34 #[help(query_system::cycle_recursive_ty_alias_help2)]
36 #[note(query_system::cycle_recursive_trait_alias)]
40 #[derive(SessionSubdiagnostic)]
41 #[note(query_system::cycle_usage)]
42 pub struct CycleUsage {
48 #[derive(SessionDiagnostic)]
49 #[diag(query_system::cycle, code = "E0391")]
53 pub stack_bottom: String,
55 pub cycle_stack: Vec<CycleStack>,
57 pub stack_count: StackCount,
59 pub alias: Option<Alias>,
61 pub cycle_usage: Option<CycleUsage>,
64 #[derive(SessionDiagnostic)]
65 #[diag(query_system::reentrant)]
68 #[derive(SessionDiagnostic)]
69 #[diag(query_system::increment_compilation)]
71 #[note(query_system::increment_compilation_note1)]
72 #[note(query_system::increment_compilation_note2)]
73 pub struct IncrementCompilation {
78 #[derive(SessionDiagnostic)]
79 #[diag(query_system::query_overflow)]
80 pub struct QueryOverflow;