@@ -4,6 +4,7 @@ use rustc_ast::*;
44use rustc_expand:: expand:: AstFragment ;
55use rustc_hir:: def:: { CtorKind , CtorOf , DefKind } ;
66use rustc_hir:: def_id:: LocalDefId ;
7+ use rustc_middle:: ty:: Feed ;
78use rustc_span:: hygiene:: LocalExpnId ;
89use rustc_span:: symbol:: { kw, sym, Symbol } ;
910use rustc_span:: Span ;
@@ -20,7 +21,7 @@ pub(crate) fn collect_definitions(
2021/// Creates `DefId`s for nodes in the AST.
2122struct DefCollector < ' a , ' b , ' tcx > {
2223 resolver : & ' a mut Resolver < ' b , ' tcx > ,
23- parent_def : LocalDefId ,
24+ parent_def : Feed < ' tcx , LocalDefId > ,
2425 impl_trait_context : ImplTraitContext ,
2526 expansion : LocalExpnId ,
2627}
@@ -32,8 +33,8 @@ impl<'a, 'b, 'tcx> DefCollector<'a, 'b, 'tcx> {
3233 name : Symbol ,
3334 def_kind : DefKind ,
3435 span : Span ,
35- ) -> LocalDefId {
36- let parent_def = self . parent_def ;
36+ ) -> Feed < ' tcx , LocalDefId > {
37+ let parent_def = self . parent_def . key ( ) ;
3738 debug ! (
3839 "create_def(node_id={:?}, def_kind={:?}, parent_def={:?})" ,
3940 node_id, def_kind, parent_def
@@ -47,10 +48,10 @@ impl<'a, 'b, 'tcx> DefCollector<'a, 'b, 'tcx> {
4748 self . expansion . to_expn_id ( ) ,
4849 span. with_parent ( None ) ,
4950 )
50- . def_id ( )
51+ . downgrade ( )
5152 }
5253
53- fn with_parent < F : FnOnce ( & mut Self ) > ( & mut self , parent_def : LocalDefId , f : F ) {
54+ fn with_parent < F : FnOnce ( & mut Self ) > ( & mut self , parent_def : Feed < ' tcx , LocalDefId > , f : F ) {
5455 let orig_parent_def = std:: mem:: replace ( & mut self . parent_def , parent_def) ;
5556 f ( self ) ;
5657 self . parent_def = orig_parent_def;
@@ -148,7 +149,7 @@ impl<'a, 'b, 'tcx> visit::Visitor<'a> for DefCollector<'a, 'b, 'tcx> {
148149 let def_id = self . create_def ( i. id , i. ident . name , def_kind, i. span ) ;
149150
150151 if let Some ( macro_data) = opt_macro_data {
151- self . resolver . macro_map . insert ( def_id. to_def_id ( ) , macro_data) ;
152+ self . resolver . macro_map . insert ( def_id. key ( ) . to_def_id ( ) , macro_data) ;
152153 }
153154
154155 self . with_parent ( def_id, |this| {
0 commit comments