mirror of
https://github.com/rust-lang/rust.git
synced 2025-06-05 03:38:29 +00:00
22 lines
746 B
Rust
22 lines
746 B
Rust
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,
|
|
);
|
|
}
|
|
}
|