use rustc_span::ErrorGuaranteed; use crate::dep_graph::DepContext; use crate::query::CycleError; pub trait Value: Sized { fn from_cycle_error(tcx: Tcx, cycle_error: &CycleError, guar: ErrorGuaranteed) -> Self; } impl Value for T { default fn from_cycle_error(tcx: Tcx, cycle_error: &CycleError, _guar: ErrorGuaranteed) -> T { tcx.sess().dcx().abort_if_errors(); // Ideally we would use `bug!` here. But bug! is only defined in rustc_middle, and it's // non-trivial to define it earlier. panic!( "<{} as Value>::from_cycle_error called without errors: {:#?}", std::any::type_name::(), cycle_error.cycle, ); } }