| use rustc_span::ErrorGuaranteed; | |
| use crate::dep_graph::DepContext; | |
| use crate::query::CycleError; | |
| pub trait Value<Tcx: DepContext>: Sized { | |
| fn from_cycle_error(tcx: Tcx, cycle_error: &CycleError, guar: ErrorGuaranteed) -> Self; | |
| } | |
| impl<Tcx: DepContext, T> Value<Tcx> 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::<T>(), | |
| cycle_error.cycle, | |
| ); | |
| } | |
| } |