@@ -14,7 +14,6 @@ use hir_expand::{
1414use span:: { AstIdMap , SyntaxContext } ;
1515use syntax:: ast:: HasAttrs ;
1616use syntax:: { AstNode , Parse , ast} ;
17- use triomphe:: Arc ;
1817use tt:: TextRange ;
1918
2019use crate :: {
@@ -23,21 +22,21 @@ use crate::{
2322} ;
2423
2524#[ derive( Debug ) ]
26- pub ( super ) struct Expander {
25+ pub ( super ) struct Expander < ' db > {
2726 span_map : SpanMap ,
2827 current_file_id : HirFileId ,
29- ast_id_map : Arc < AstIdMap > ,
28+ ast_id_map : & ' db AstIdMap ,
3029 /// `recursion_depth == usize::MAX` indicates that the recursion limit has been reached.
3130 recursion_depth : u32 ,
3231 recursion_limit : usize ,
3332}
3433
35- impl Expander {
34+ impl < ' db > Expander < ' db > {
3635 pub ( super ) fn new (
37- db : & dyn DefDatabase ,
36+ db : & ' db dyn DefDatabase ,
3837 current_file_id : HirFileId ,
39- def_map : & DefMap ,
40- ) -> Expander {
38+ def_map : & ' db DefMap ,
39+ ) -> Expander < ' db > {
4140 let recursion_limit = def_map. recursion_limit ( ) as usize ;
4241 let recursion_limit = if cfg ! ( test) {
4342 // Without this, `body::tests::your_stack_belongs_to_me` stack-overflows in debug
@@ -77,12 +76,12 @@ impl Expander {
7776
7877 pub ( super ) fn enter_expand < T : ast:: AstNode > (
7978 & mut self ,
80- db : & dyn DefDatabase ,
79+ db : & ' db dyn DefDatabase ,
8180 macro_call : ast:: MacroCall ,
8281 krate : Crate ,
8382 resolver : impl Fn ( & ModPath ) -> Option < MacroId > ,
8483 eager_callback : EagerCallBackFn < ' _ > ,
85- ) -> Result < ExpandResult < Option < ( Mark , Option < Parse < T > > ) > > , UnresolvedMacro > {
84+ ) -> Result < ExpandResult < Option < ( Mark < ' db > , Option < Parse < T > > ) > > , UnresolvedMacro > {
8685 // FIXME: within_limit should support this, instead of us having to extract the error
8786 let mut unresolved_macro_err = None ;
8887
@@ -130,13 +129,13 @@ impl Expander {
130129
131130 pub ( super ) fn enter_expand_id < T : ast:: AstNode > (
132131 & mut self ,
133- db : & dyn DefDatabase ,
132+ db : & ' db dyn DefDatabase ,
134133 call_id : MacroCallId ,
135- ) -> ExpandResult < Option < ( Mark , Option < Parse < T > > ) > > {
134+ ) -> ExpandResult < Option < ( Mark < ' db > , Option < Parse < T > > ) > > {
136135 self . within_limit ( db, |_this| ExpandResult :: ok ( Some ( call_id) ) )
137136 }
138137
139- pub ( super ) fn exit ( & mut self , Mark { file_id, span_map, ast_id_map, mut bomb } : Mark ) {
138+ pub ( super ) fn exit ( & mut self , Mark { file_id, span_map, ast_id_map, mut bomb } : Mark < ' db > ) {
140139 self . span_map = span_map;
141140 self . current_file_id = file_id;
142141 self . ast_id_map = ast_id_map;
@@ -162,9 +161,9 @@ impl Expander {
162161
163162 fn within_limit < F , T : ast:: AstNode > (
164163 & mut self ,
165- db : & dyn DefDatabase ,
164+ db : & ' db dyn DefDatabase ,
166165 op : F ,
167- ) -> ExpandResult < Option < ( Mark , Option < Parse < T > > ) > >
166+ ) -> ExpandResult < Option < ( Mark < ' db > , Option < Parse < T > > ) > >
168167 where
169168 F : FnOnce ( & mut Self ) -> ExpandResult < Option < MacroCallId > > ,
170169 {
@@ -219,7 +218,7 @@ impl Expander {
219218
220219 #[ inline]
221220 pub ( super ) fn ast_id_map ( & self ) -> & AstIdMap {
222- & self . ast_id_map
221+ self . ast_id_map
223222 }
224223
225224 #[ inline]
@@ -229,9 +228,9 @@ impl Expander {
229228}
230229
231230#[ derive( Debug ) ]
232- pub ( super ) struct Mark {
231+ pub ( super ) struct Mark < ' db > {
233232 file_id : HirFileId ,
234233 span_map : SpanMap ,
235- ast_id_map : Arc < AstIdMap > ,
234+ ast_id_map : & ' db AstIdMap ,
236235 bomb : DropBomb ,
237236}
0 commit comments