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:
///
}
}
- 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.
// 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;
}
}
_ => {
// 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 {
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.
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 {
/// 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:
/// 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;