Make sure tcx.create_def also depends on the forever red node, instead of just tcx.at(span).create_def
This commit is contained in:
@@ -1046,12 +1046,6 @@ impl<'tcx> TyCtxtAt<'tcx> {
|
||||
name: Symbol,
|
||||
def_kind: DefKind,
|
||||
) -> TyCtxtFeed<'tcx, LocalDefId> {
|
||||
// This function modifies `self.definitions` using a side-effect.
|
||||
// We need to ensure that these side effects are re-run by the incr. comp. engine.
|
||||
// Depending on the forever-red node will tell the graph that the calling query
|
||||
// needs to be re-evaluated.
|
||||
self.dep_graph.read_index(DepNodeIndex::FOREVER_RED_NODE);
|
||||
|
||||
// The following call has the side effect of modifying the tables inside `definitions`.
|
||||
// These very tables are relied on by the incr. comp. engine to decode DepNodes and to
|
||||
// decode the on-disk cache.
|
||||
@@ -1080,6 +1074,12 @@ impl<'tcx> TyCtxt<'tcx> {
|
||||
let data = def_kind.def_path_data(name);
|
||||
let def_id = self.untracked.definitions.write().create_def(parent, data);
|
||||
|
||||
// This function modifies `self.definitions` using a side-effect.
|
||||
// We need to ensure that these side effects are re-run by the incr. comp. engine.
|
||||
// Depending on the forever-red node will tell the graph that the calling query
|
||||
// needs to be re-evaluated.
|
||||
self.dep_graph.read_index(DepNodeIndex::FOREVER_RED_NODE);
|
||||
|
||||
let feed = self.feed_local_def_id(def_id);
|
||||
feed.def_kind(def_kind);
|
||||
// Unique types created for closures participate in type privacy checking.
|
||||
|
||||
Reference in New Issue
Block a user