Merge ensure_node_can_be_forced into force_from_dep_node.

This commit is contained in:
Camille GILLOT 2020-03-21 00:21:57 +01:00
parent db7bd5f828
commit 2326ae39b2
3 changed files with 9 additions and 16 deletions

View file

@ -110,10 +110,6 @@ impl<'tcx> DepContext for TyCtxt<'tcx> {
TyCtxt::create_stable_hashing_context(*self)
}
fn force_from_dep_node(&self, node: &DepNode) -> bool {
ty::query::force_from_dep_node(*self, node)
}
/// Extracts the DefId corresponding to this DepNode. This will work
/// if two conditions are met:
///
@ -133,7 +129,7 @@ impl<'tcx> DepContext for TyCtxt<'tcx> {
}
}
fn ensure_node_can_be_forced(&self, dep_dep_node: &DepNode) -> Option<()> {
fn try_force_previous_green(&self, dep_dep_node: &DepNode) -> bool {
// FIXME: This match is just a workaround for incremental bugs and should
// be removed. https://github.com/rust-lang/rust/issues/62649 is one such
// bug that must be fixed before removing this.
@ -162,12 +158,12 @@ impl<'tcx> DepContext for TyCtxt<'tcx> {
// Since the given `DefPath` does not
// denote the item that previously
// existed, we just fail to mark green.
return None;
return false;
}
} else {
// If the node does not exist anymore, we
// just fail to mark green.
return None;
return false;
}
}
_ => {
@ -175,7 +171,9 @@ impl<'tcx> DepContext for TyCtxt<'tcx> {
// forced.
}
}
Some(())
debug!("try_force_previous_green({:?}) --- trying to force", dep_dep_node);
ty::query::force_from_dep_node(*self, dep_dep_node)
}
fn has_errors_or_delayed_span_bugs(&self) -> bool {

View file

@ -635,8 +635,6 @@ impl<K: DepKind> DepGraph<K> {
current_deps.push(node_index);
continue;
}
} else {
tcx.ensure_node_can_be_forced(dep_dep_node)?;
}
// We failed to mark it green, so we try to force the query.
@ -645,7 +643,7 @@ impl<K: DepKind> DepGraph<K> {
dependency {:?}",
dep_node, dep_dep_node
);
if tcx.force_from_dep_node(dep_dep_node) {
if tcx.try_force_previous_green(dep_dep_node) {
let dep_dep_node_color = data.colors.get(dep_dep_node_index);
match dep_dep_node_color {

View file

@ -31,8 +31,8 @@ pub trait DepContext: Copy {
/// Create a hashing context for hashing new results.
fn create_stable_hashing_context(&self) -> Self::StableHashingContext;
/// Force the execution of a query given the associated `DepNode`.
fn force_from_dep_node(&self, node: &DepNode<Self::DepKind>) -> bool;
/// Try to force a dep node to execute and see if it's green.
fn try_force_previous_green(&self, node: &DepNode<Self::DepKind>) -> bool;
/// Extracts the DefId corresponding to this DepNode. This will work
/// if two conditions are met:
@ -46,9 +46,6 @@ pub trait DepContext: Copy {
/// has been removed.
fn extract_def_id(&self, node: &DepNode<Self::DepKind>) -> Option<DefId>;
/// Check the legality of forcing this node.
fn ensure_node_can_be_forced(&self, dep_dep_node: &DepNode<Self::DepKind>) -> Option<()>;
/// Return whether the current session is tainted by errors.
fn has_errors_or_delayed_span_bugs(&self) -> bool;