@@ -26,10 +26,9 @@ use rustc_hir::def_id::LocalDefId;
2626use rustc_hir:: {
2727 Attribute , ImplItemKind , ItemKind as HirItem , Node as HirNode , TraitItemKind , intravisit,
2828} ;
29- use rustc_middle:: dep_graph:: { DepKind , DepNode , DepNodeExt , dep_kind_from_label, label_strs} ;
29+ use rustc_middle:: dep_graph:: { DepNode , DepNodeExt , dep_kind_from_label, label_strs} ;
3030use rustc_middle:: hir:: nested_filter;
3131use rustc_middle:: ty:: TyCtxt ;
32- use rustc_span:: def_id:: DefPathHash ;
3332use rustc_span:: { Span , Symbol , sym} ;
3433use thin_vec:: ThinVec ;
3534use tracing:: debug;
@@ -358,29 +357,6 @@ impl<'tcx> DirtyCleanVisitor<'tcx> {
358357 }
359358 }
360359
361- fn assert_loaded_from_disk ( & self , item_span : Span , dep_item : DepItem ) {
362- debug ! ( "assert_loaded_from_disk({:?})" , dep_item) ;
363-
364- match dep_item {
365- DepItem :: DepNode ( dep_node) => {
366- if !self . tcx . dep_graph . debug_was_loaded_from_disk ( dep_node) {
367- let dep_node_str = self . dep_node_str ( & dep_node) ;
368- self . tcx . dcx ( ) . emit_err ( errors:: NotLoaded {
369- span : item_span,
370- dep_node_str : & dep_node_str,
371- } ) ;
372- }
373- }
374- DepItem :: DepKind { kind, label } => {
375- if !self . tcx . dep_graph . debug_dep_kind_was_loaded_from_disk ( kind) {
376- self . tcx
377- . dcx ( )
378- . emit_err ( errors:: NotLoaded { span : item_span, dep_node_str : & label } ) ;
379- }
380- }
381- }
382- }
383-
384360 fn check_item ( & mut self , item_id : LocalDefId ) {
385361 let item_span = self . tcx . def_span ( item_id. to_def_id ( ) ) ;
386362 let def_path_hash = self . tcx . def_path_hash ( item_id. to_def_id ( ) ) ;
@@ -398,34 +374,32 @@ impl<'tcx> DirtyCleanVisitor<'tcx> {
398374 self . assert_dirty ( item_span, dep_node) ;
399375 }
400376 for label in assertion. loaded_from_disk . items ( ) . into_sorted_stable_ord ( ) {
401- let dep_item = resolve_dep_item ( self . tcx , label, def_path_hash) ;
402- self . assert_loaded_from_disk ( item_span, dep_item) ;
377+ let dep_kind = dep_kind_from_label ( label) ;
378+ match DepNode :: from_label_string ( self . tcx , label, def_path_hash) {
379+ Ok ( dep_node) => {
380+ if !self . tcx . dep_graph . debug_was_loaded_from_disk ( dep_node) {
381+ let dep_node_str = self . dep_node_str ( & dep_node) ;
382+ self . tcx . dcx ( ) . emit_err ( errors:: NotLoaded {
383+ span : item_span,
384+ dep_node_str : & dep_node_str,
385+ } ) ;
386+ }
387+ }
388+ // Opaque/unit hash, we only know the dep kind
389+ Err ( ( ) ) => {
390+ if !self . tcx . dep_graph . debug_dep_kind_was_loaded_from_disk ( dep_kind) {
391+ self . tcx . dcx ( ) . emit_err ( errors:: NotLoaded {
392+ span : item_span,
393+ dep_node_str : & label,
394+ } ) ;
395+ }
396+ }
397+ }
403398 }
404399 }
405400 }
406401}
407402
408- /// Represents a query that we want to test for dirtiness.
409- #[ derive( Debug ) ]
410- enum DepItem {
411- /// We have a DepNode for this query.
412- DepNode ( DepNode ) ,
413- /// This query has an opaque or a unit hash fingerprint, so we cannot resolve a DepNode for it.
414- /// We thus only store the DepKind, so that we can check if *any* query with the given label
415- /// was executed, regardless of its query arguments.
416- DepKind { kind : DepKind , label : String } ,
417- }
418-
419- fn resolve_dep_item ( tcx : TyCtxt < ' _ > , label : & str , def_path_hash : DefPathHash ) -> DepItem {
420- let dep_kind = dep_kind_from_label ( label) . unwrap ( ) ; // Ensure that the query label is known
421-
422- match DepNode :: from_label_string ( tcx, label, def_path_hash) {
423- Ok ( dep_node) => DepItem :: DepNode ( dep_node) ,
424- // Opaque/unit hash, we only know the dep kind
425- Err ( ( ) ) => DepItem :: DepKind { kind : dep_kind, label : label. to_owned ( ) } ,
426- }
427- }
428-
429403/// Given a `#[rustc_clean]` attribute, scan for a `cfg="foo"` attribute and check whether we have
430404/// a cfg flag called `foo`.
431405fn check_config ( tcx : TyCtxt < ' _ > , attr : & Attribute ) -> bool {
0 commit comments