@@ -4,6 +4,7 @@ use rustc_ast::*;
4
4
use rustc_expand:: expand:: AstFragment ;
5
5
use rustc_hir:: def:: { CtorKind , CtorOf , DefKind } ;
6
6
use rustc_hir:: def_id:: LocalDefId ;
7
+ use rustc_middle:: ty:: Feed ;
7
8
use rustc_span:: hygiene:: LocalExpnId ;
8
9
use rustc_span:: symbol:: { kw, sym, Symbol } ;
9
10
use rustc_span:: Span ;
@@ -20,7 +21,7 @@ pub(crate) fn collect_definitions(
20
21
/// Creates `DefId`s for nodes in the AST.
21
22
struct DefCollector < ' a , ' b , ' tcx > {
22
23
resolver : & ' a mut Resolver < ' b , ' tcx > ,
23
- parent_def : LocalDefId ,
24
+ parent_def : Feed < ' tcx , LocalDefId > ,
24
25
impl_trait_context : ImplTraitContext ,
25
26
expansion : LocalExpnId ,
26
27
}
@@ -32,8 +33,8 @@ impl<'a, 'b, 'tcx> DefCollector<'a, 'b, 'tcx> {
32
33
name : Symbol ,
33
34
def_kind : DefKind ,
34
35
span : Span ,
35
- ) -> LocalDefId {
36
- let parent_def = self . parent_def ;
36
+ ) -> Feed < ' tcx , LocalDefId > {
37
+ let parent_def = self . parent_def . key ( ) ;
37
38
debug ! (
38
39
"create_def(node_id={:?}, def_kind={:?}, parent_def={:?})" ,
39
40
node_id, def_kind, parent_def
@@ -47,10 +48,10 @@ impl<'a, 'b, 'tcx> DefCollector<'a, 'b, 'tcx> {
47
48
self . expansion . to_expn_id ( ) ,
48
49
span. with_parent ( None ) ,
49
50
)
50
- . def_id ( )
51
+ . downgrade ( )
51
52
}
52
53
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 ) {
54
55
let orig_parent_def = std:: mem:: replace ( & mut self . parent_def , parent_def) ;
55
56
f ( self ) ;
56
57
self . parent_def = orig_parent_def;
@@ -148,7 +149,7 @@ impl<'a, 'b, 'tcx> visit::Visitor<'a> for DefCollector<'a, 'b, 'tcx> {
148
149
let def_id = self . create_def ( i. id , i. ident . name , def_kind, i. span ) ;
149
150
150
151
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) ;
152
153
}
153
154
154
155
self . with_parent ( def_id, |this| {
0 commit comments