use rustc_errors::codes::*;
use rustc_hir::limit::Limit;
use rustc_macros::{Diagnostic, Subdiagnostic};
use rustc_span::{Span, Symbol};

#[derive(Subdiagnostic)]
#[note(query_system_cycle_stack_middle)]
pub(crate) struct CycleStack {
    #[primary_span]
    pub span: Span,
    pub desc: String,
}

#[derive(Copy, Clone)]
pub enum HandleCycleError {
    Error,
    Fatal,
    DelayBug,
    Stash,
}

#[derive(Subdiagnostic)]
pub(crate) enum StackCount {
    #[note(query_system_cycle_stack_single)]
    Single,
    #[note(query_system_cycle_stack_multiple)]
    Multiple,
}

#[derive(Subdiagnostic)]
pub(crate) enum Alias {
    #[note(query_system_cycle_recursive_ty_alias)]
    #[help(query_system_cycle_recursive_ty_alias_help1)]
    #[help(query_system_cycle_recursive_ty_alias_help2)]
    Ty,
    #[note(query_system_cycle_recursive_trait_alias)]
    Trait,
}

#[derive(Subdiagnostic)]
#[note(query_system_cycle_usage)]
pub(crate) struct CycleUsage {
    #[primary_span]
    pub span: Span,
    pub usage: String,
}

#[derive(Diagnostic)]
#[diag(query_system_cycle, code = E0391)]
pub(crate) struct Cycle {
    #[primary_span]
    pub span: Span,
    pub stack_bottom: String,
    #[subdiagnostic]
    pub cycle_stack: Vec<CycleStack>,
    #[subdiagnostic]
    pub stack_count: StackCount,
    #[subdiagnostic]
    pub alias: Option<Alias>,
    #[subdiagnostic]
    pub cycle_usage: Option<CycleUsage>,
    #[note]
    pub note_span: (),
}

#[derive(Diagnostic)]
#[diag(query_system_reentrant)]
pub(crate) struct Reentrant;

#[derive(Diagnostic)]
#[diag(query_system_increment_compilation)]
#[note(query_system_increment_compilation_note1)]
#[note(query_system_increment_compilation_note2)]
#[note(query_system_increment_compilation_note3)]
#[note(query_system_increment_compilation_note4)]
pub(crate) struct IncrementCompilation {
    pub run_cmd: String,
    pub dep_node: String,
}

#[derive(Diagnostic)]
#[help]
#[diag(query_system_query_overflow)]
pub struct QueryOverflow {
    #[primary_span]
    pub span: Span,
    #[subdiagnostic]
    pub note: QueryOverflowNote,
    pub suggested_limit: Limit,
    pub crate_name: Symbol,
}

#[derive(Subdiagnostic)]
#[note(query_system_overflow_note)]
pub struct QueryOverflowNote {
    pub desc: String,
    pub depth: usize,
}
