@@ -21,7 +21,7 @@ use rustc_hir::lints::DelayedLint;
2121use rustc_hir:: * ;
2222use rustc_index:: IndexVec ;
2323use rustc_macros:: { Decodable , Encodable , HashStable } ;
24- use rustc_span:: { ErrorGuaranteed , ExpnId , Ident , Span } ;
24+ use rustc_span:: { ErrorGuaranteed , ExpnId , Span } ;
2525
2626use crate :: query:: Providers ;
2727use crate :: ty:: { ResolverAstLowering , TyCtxt } ;
@@ -76,25 +76,6 @@ impl<'hir> Crate<'hir> {
7676
7777 tcx. delayed_owner ( def_id)
7878 }
79-
80- pub fn opt_ident ( & self , tcx : TyCtxt < ' hir > , id : HirId ) -> Option < Ident > {
81- // If possible don't force lowering of delayed owner, as it can lead to cycles.
82- if let MaybeOwner :: Delayed ( delayed_owner) = self . owners [ id. owner . def_id ] {
83- return Some ( delayed_owner. ident ) ;
84- }
85-
86- match tcx. hir_node ( id) {
87- Node :: Pat ( & Pat { kind : PatKind :: Binding ( _, _, ident, _) , .. } ) => Some ( ident) ,
88- // A `Ctor` doesn't have an identifier itself, but its parent
89- // struct/variant does. Compare with `hir::Map::span`.
90- Node :: Ctor ( ..) => match tcx. parent_hir_node ( id) {
91- Node :: Item ( item) => Some ( item. kind . ident ( ) . unwrap ( ) ) ,
92- Node :: Variant ( variant) => Some ( variant. ident ) ,
93- _ => unreachable ! ( ) ,
94- } ,
95- node => node. ident ( ) ,
96- }
97- }
9879}
9980
10081impl < HirCtx : HashStableContext > HashStable < HirCtx > for Crate < ' _ > {
@@ -510,6 +491,7 @@ pub fn provide(providers: &mut Providers) {
510491 providers. hir_crate_items = map:: hir_crate_items;
511492 providers. crate_hash = map:: crate_hash;
512493 providers. hir_module_items = map:: hir_module_items;
494+ providers. hir_maybe_owner_unprocessed = |tcx, id| & tcx. hir_crate ( ( ) ) . owners [ id] ;
513495 providers. local_def_id_to_hir_id = |tcx, def_id| match tcx. hir_crate ( ( ) ) . owner ( tcx, def_id) {
514496 MaybeOwner :: Owner ( _) => HirId :: make_owner ( def_id) ,
515497 MaybeOwner :: NonOwner ( hir_id) => hir_id,
0 commit comments