Make HandleCycleError
an enum instead of a macro-generated closure
- Add a `HandleCycleError` enum to rustc_query_system, along with a `handle_cycle_error` function - Move `Value` to rustc_query_system, so `handle_cycle_error` can use it - Move the `Value` impls from rustc_query_impl to rustc_middle. This is necessary due to orphan rules.
This commit is contained in:
parent
4e09a13bb8
commit
4856affd90
9 changed files with 86 additions and 43 deletions
14
compiler/rustc_query_system/src/values.rs
Normal file
14
compiler/rustc_query_system/src/values.rs
Normal file
|
@ -0,0 +1,14 @@
|
|||
use crate::dep_graph::DepContext;
|
||||
|
||||
pub trait Value<CTX: DepContext>: Sized {
|
||||
fn from_cycle_error(tcx: CTX) -> Self;
|
||||
}
|
||||
|
||||
impl<CTX: DepContext, T> Value<CTX> for T {
|
||||
default fn from_cycle_error(tcx: CTX) -> T {
|
||||
tcx.sess().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!("Value::from_cycle_error called without errors");
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue