@@ -27,13 +27,13 @@ macro_rules! lint_callback { ($cx:expr, $f:ident, $($args:expr),*) => ({
2727
2828/// Implements the AST traversal for early lint passes. `T` provides the
2929/// `check_*` methods.
30- pub struct EarlyContextAndPass < ' a , ' b , T : EarlyLintPass > {
31- context : EarlyContext < ' a > ,
32- tcx : Option < TyCtxt < ' b > > ,
30+ pub struct EarlyContextAndPass < ' ecx , ' tcx , T : EarlyLintPass > {
31+ context : EarlyContext < ' ecx > ,
32+ tcx : Option < TyCtxt < ' tcx > > ,
3333 pass : T ,
3434}
3535
36- impl < ' a , ' b , T : EarlyLintPass > EarlyContextAndPass < ' a , ' b , T > {
36+ impl < ' ecx , ' tcx , T : EarlyLintPass > EarlyContextAndPass < ' ecx , ' tcx , T > {
3737 // This always-inlined function is for the hot call site.
3838 #[ inline( always) ]
3939 #[ allow( rustc:: diagnostic_outside_of_impl) ]
@@ -54,7 +54,7 @@ impl<'a, 'b, T: EarlyLintPass> EarlyContextAndPass<'a, 'b, T> {
5454 /// Merge the lints specified by any lint attributes into the
5555 /// current lint context, call the provided function, then reset the
5656 /// lints in effect to their previous state.
57- fn with_lint_attrs < F > ( & mut self , id : ast:: NodeId , attrs : & ' a [ ast:: Attribute ] , f : F )
57+ fn with_lint_attrs < F > ( & mut self , id : ast:: NodeId , attrs : & ' _ [ ast:: Attribute ] , f : F )
5858 where
5959 F : FnOnce ( & mut Self ) ,
6060 {
@@ -72,65 +72,67 @@ impl<'a, 'b, T: EarlyLintPass> EarlyContextAndPass<'a, 'b, T> {
7272 }
7373}
7474
75- impl < ' a , ' b , T : EarlyLintPass > ast_visit:: Visitor < ' a > for EarlyContextAndPass < ' a , ' b , T > {
76- fn visit_coroutine_kind ( & mut self , coroutine_kind : & ' a ast:: CoroutineKind ) -> Self :: Result {
75+ impl < ' ast , ' ecx , ' tcx , T : EarlyLintPass > ast_visit:: Visitor < ' ast >
76+ for EarlyContextAndPass < ' ecx , ' tcx , T >
77+ {
78+ fn visit_coroutine_kind ( & mut self , coroutine_kind : & ' ast ast:: CoroutineKind ) -> Self :: Result {
7779 self . check_id ( coroutine_kind. closure_id ( ) ) ;
7880 }
7981
80- fn visit_param ( & mut self , param : & ' a ast:: Param ) {
82+ fn visit_param ( & mut self , param : & ' ast ast:: Param ) {
8183 self . with_lint_attrs ( param. id , & param. attrs , |cx| {
8284 lint_callback ! ( cx, check_param, param) ;
8385 ast_visit:: walk_param ( cx, param) ;
8486 } ) ;
8587 }
8688
87- fn visit_item ( & mut self , it : & ' a ast:: Item ) {
89+ fn visit_item ( & mut self , it : & ' ast ast:: Item ) {
8890 self . with_lint_attrs ( it. id , & it. attrs , |cx| {
8991 lint_callback ! ( cx, check_item, it) ;
9092 ast_visit:: walk_item ( cx, it) ;
9193 lint_callback ! ( cx, check_item_post, it) ;
9294 } )
9395 }
9496
95- fn visit_foreign_item ( & mut self , it : & ' a ast:: ForeignItem ) {
97+ fn visit_foreign_item ( & mut self , it : & ' ast ast:: ForeignItem ) {
9698 self . with_lint_attrs ( it. id , & it. attrs , |cx| {
9799 ast_visit:: walk_item ( cx, it) ;
98100 } )
99101 }
100102
101- fn visit_pat ( & mut self , p : & ' a ast:: Pat ) {
103+ fn visit_pat ( & mut self , p : & ' ast ast:: Pat ) {
102104 lint_callback ! ( self , check_pat, p) ;
103105 self . check_id ( p. id ) ;
104106 ast_visit:: walk_pat ( self , p) ;
105107 lint_callback ! ( self , check_pat_post, p) ;
106108 }
107109
108- fn visit_pat_field ( & mut self , field : & ' a ast:: PatField ) {
110+ fn visit_pat_field ( & mut self , field : & ' ast ast:: PatField ) {
109111 self . with_lint_attrs ( field. id , & field. attrs , |cx| {
110112 ast_visit:: walk_pat_field ( cx, field) ;
111113 } ) ;
112114 }
113115
114- fn visit_anon_const ( & mut self , c : & ' a ast:: AnonConst ) {
116+ fn visit_anon_const ( & mut self , c : & ' ast ast:: AnonConst ) {
115117 self . check_id ( c. id ) ;
116118 ast_visit:: walk_anon_const ( self , c) ;
117119 }
118120
119- fn visit_expr ( & mut self , e : & ' a ast:: Expr ) {
121+ fn visit_expr ( & mut self , e : & ' ast ast:: Expr ) {
120122 self . with_lint_attrs ( e. id , & e. attrs , |cx| {
121123 lint_callback ! ( cx, check_expr, e) ;
122124 ast_visit:: walk_expr ( cx, e) ;
123125 lint_callback ! ( cx, check_expr_post, e) ;
124126 } )
125127 }
126128
127- fn visit_expr_field ( & mut self , f : & ' a ast:: ExprField ) {
129+ fn visit_expr_field ( & mut self , f : & ' ast ast:: ExprField ) {
128130 self . with_lint_attrs ( f. id , & f. attrs , |cx| {
129131 ast_visit:: walk_expr_field ( cx, f) ;
130132 } )
131133 }
132134
133- fn visit_stmt ( & mut self , s : & ' a ast:: Stmt ) {
135+ fn visit_stmt ( & mut self , s : & ' ast ast:: Stmt ) {
134136 // Add the statement's lint attributes to our
135137 // current state when checking the statement itself.
136138 // This allows us to handle attributes like
@@ -150,33 +152,33 @@ impl<'a, 'b, T: EarlyLintPass> ast_visit::Visitor<'a> for EarlyContextAndPass<'a
150152 ast_visit:: walk_stmt ( self , s) ;
151153 }
152154
153- fn visit_fn ( & mut self , fk : ast_visit:: FnKind < ' a > , span : Span , id : ast:: NodeId ) {
155+ fn visit_fn ( & mut self , fk : ast_visit:: FnKind < ' ast > , span : Span , id : ast:: NodeId ) {
154156 lint_callback ! ( self , check_fn, fk, span, id) ;
155157 self . check_id ( id) ;
156158 ast_visit:: walk_fn ( self , fk) ;
157159 }
158160
159- fn visit_variant_data ( & mut self , s : & ' a ast:: VariantData ) {
161+ fn visit_variant_data ( & mut self , s : & ' ast ast:: VariantData ) {
160162 if let Some ( ctor_node_id) = s. ctor_node_id ( ) {
161163 self . check_id ( ctor_node_id) ;
162164 }
163165 ast_visit:: walk_struct_def ( self , s) ;
164166 }
165167
166- fn visit_field_def ( & mut self , s : & ' a ast:: FieldDef ) {
168+ fn visit_field_def ( & mut self , s : & ' ast ast:: FieldDef ) {
167169 self . with_lint_attrs ( s. id , & s. attrs , |cx| {
168170 ast_visit:: walk_field_def ( cx, s) ;
169171 } )
170172 }
171173
172- fn visit_variant ( & mut self , v : & ' a ast:: Variant ) {
174+ fn visit_variant ( & mut self , v : & ' ast ast:: Variant ) {
173175 self . with_lint_attrs ( v. id , & v. attrs , |cx| {
174176 lint_callback ! ( cx, check_variant, v) ;
175177 ast_visit:: walk_variant ( cx, v) ;
176178 } )
177179 }
178180
179- fn visit_ty ( & mut self , t : & ' a ast:: Ty ) {
181+ fn visit_ty ( & mut self , t : & ' ast ast:: Ty ) {
180182 lint_callback ! ( self , check_ty, t) ;
181183 self . check_id ( t. id ) ;
182184 ast_visit:: walk_ty ( self , t) ;
@@ -186,55 +188,55 @@ impl<'a, 'b, T: EarlyLintPass> ast_visit::Visitor<'a> for EarlyContextAndPass<'a
186188 lint_callback ! ( self , check_ident, ident) ;
187189 }
188190
189- fn visit_local ( & mut self , l : & ' a ast:: Local ) {
191+ fn visit_local ( & mut self , l : & ' ast ast:: Local ) {
190192 self . with_lint_attrs ( l. id , & l. attrs , |cx| {
191193 lint_callback ! ( cx, check_local, l) ;
192194 ast_visit:: walk_local ( cx, l) ;
193195 } )
194196 }
195197
196- fn visit_block ( & mut self , b : & ' a ast:: Block ) {
198+ fn visit_block ( & mut self , b : & ' ast ast:: Block ) {
197199 lint_callback ! ( self , check_block, b) ;
198200 self . check_id ( b. id ) ;
199201 ast_visit:: walk_block ( self , b) ;
200202 }
201203
202- fn visit_arm ( & mut self , a : & ' a ast:: Arm ) {
204+ fn visit_arm ( & mut self , a : & ' ast ast:: Arm ) {
203205 self . with_lint_attrs ( a. id , & a. attrs , |cx| {
204206 lint_callback ! ( cx, check_arm, a) ;
205207 ast_visit:: walk_arm ( cx, a) ;
206208 } )
207209 }
208210
209- fn visit_generic_arg ( & mut self , arg : & ' a ast:: GenericArg ) {
211+ fn visit_generic_arg ( & mut self , arg : & ' ast ast:: GenericArg ) {
210212 lint_callback ! ( self , check_generic_arg, arg) ;
211213 ast_visit:: walk_generic_arg ( self , arg) ;
212214 }
213215
214- fn visit_generic_param ( & mut self , param : & ' a ast:: GenericParam ) {
216+ fn visit_generic_param ( & mut self , param : & ' ast ast:: GenericParam ) {
215217 self . with_lint_attrs ( param. id , & param. attrs , |cx| {
216218 lint_callback ! ( cx, check_generic_param, param) ;
217219 ast_visit:: walk_generic_param ( cx, param) ;
218220 } ) ;
219221 }
220222
221- fn visit_generics ( & mut self , g : & ' a ast:: Generics ) {
223+ fn visit_generics ( & mut self , g : & ' ast ast:: Generics ) {
222224 lint_callback ! ( self , check_generics, g) ;
223225 ast_visit:: walk_generics ( self , g) ;
224226 }
225227
226- fn visit_where_predicate ( & mut self , p : & ' a ast:: WherePredicate ) {
228+ fn visit_where_predicate ( & mut self , p : & ' ast ast:: WherePredicate ) {
227229 lint_callback ! ( self , enter_where_predicate, p) ;
228230 ast_visit:: walk_where_predicate ( self , p) ;
229231 lint_callback ! ( self , exit_where_predicate, p) ;
230232 }
231233
232- fn visit_poly_trait_ref ( & mut self , t : & ' a ast:: PolyTraitRef ) {
234+ fn visit_poly_trait_ref ( & mut self , t : & ' ast ast:: PolyTraitRef ) {
233235 lint_callback ! ( self , check_poly_trait_ref, t) ;
234236 ast_visit:: walk_poly_trait_ref ( self , t) ;
235237 }
236238
237- fn visit_assoc_item ( & mut self , item : & ' a ast:: AssocItem , ctxt : ast_visit:: AssocCtxt ) {
239+ fn visit_assoc_item ( & mut self , item : & ' ast ast:: AssocItem , ctxt : ast_visit:: AssocCtxt ) {
238240 self . with_lint_attrs ( item. id , & item. attrs , |cx| {
239241 match ctxt {
240242 ast_visit:: AssocCtxt :: Trait => {
@@ -248,32 +250,32 @@ impl<'a, 'b, T: EarlyLintPass> ast_visit::Visitor<'a> for EarlyContextAndPass<'a
248250 } ) ;
249251 }
250252
251- fn visit_lifetime ( & mut self , lt : & ' a ast:: Lifetime , _: ast_visit:: LifetimeCtxt ) {
253+ fn visit_lifetime ( & mut self , lt : & ' ast ast:: Lifetime , _: ast_visit:: LifetimeCtxt ) {
252254 self . check_id ( lt. id ) ;
253255 ast_visit:: walk_lifetime ( self , lt) ;
254256 }
255257
256- fn visit_path ( & mut self , p : & ' a ast:: Path , id : ast:: NodeId ) {
258+ fn visit_path ( & mut self , p : & ' ast ast:: Path , id : ast:: NodeId ) {
257259 self . check_id ( id) ;
258260 ast_visit:: walk_path ( self , p) ;
259261 }
260262
261- fn visit_path_segment ( & mut self , s : & ' a ast:: PathSegment ) {
263+ fn visit_path_segment ( & mut self , s : & ' ast ast:: PathSegment ) {
262264 self . check_id ( s. id ) ;
263265 ast_visit:: walk_path_segment ( self , s) ;
264266 }
265267
266- fn visit_attribute ( & mut self , attr : & ' a ast:: Attribute ) {
268+ fn visit_attribute ( & mut self , attr : & ' ast ast:: Attribute ) {
267269 lint_callback ! ( self , check_attribute, attr) ;
268270 ast_visit:: walk_attribute ( self , attr) ;
269271 }
270272
271- fn visit_mac_def ( & mut self , mac : & ' a ast:: MacroDef , id : ast:: NodeId ) {
273+ fn visit_mac_def ( & mut self , mac : & ' ast ast:: MacroDef , id : ast:: NodeId ) {
272274 lint_callback ! ( self , check_mac_def, mac) ;
273275 self . check_id ( id) ;
274276 }
275277
276- fn visit_mac_call ( & mut self , mac : & ' a ast:: MacCall ) {
278+ fn visit_mac_call ( & mut self , mac : & ' ast ast:: MacCall ) {
277279 lint_callback ! ( self , check_mac, mac) ;
278280 ast_visit:: walk_mac ( self , mac) ;
279281 }
@@ -315,28 +317,18 @@ crate::early_lint_methods!(impl_early_lint_pass, []);
315317/// This trait generalizes over those nodes.
316318pub trait EarlyCheckNode < ' a > : Copy {
317319 fn id ( self ) -> ast:: NodeId ;
318- fn attrs < ' b > ( self ) -> & ' b [ ast:: Attribute ]
319- where
320- ' a : ' b ;
321- fn check < ' b , ' c , T : EarlyLintPass > ( self , cx : & mut EarlyContextAndPass < ' b , ' c , T > )
322- where
323- ' a : ' b ;
320+ fn attrs ( self ) -> & ' a [ ast:: Attribute ] ;
321+ fn check < ' ecx , ' tcx , T : EarlyLintPass > ( self , cx : & mut EarlyContextAndPass < ' ecx , ' tcx , T > ) ;
324322}
325323
326324impl < ' a > EarlyCheckNode < ' a > for ( & ' a ast:: Crate , & ' a [ ast:: Attribute ] ) {
327325 fn id ( self ) -> ast:: NodeId {
328326 ast:: CRATE_NODE_ID
329327 }
330- fn attrs < ' b > ( self ) -> & ' b [ ast:: Attribute ]
331- where
332- ' a : ' b ,
333- {
328+ fn attrs ( self ) -> & ' a [ ast:: Attribute ] {
334329 self . 1
335330 }
336- fn check < ' b , ' c , T : EarlyLintPass > ( self , cx : & mut EarlyContextAndPass < ' b , ' c , T > )
337- where
338- ' a : ' b ,
339- {
331+ fn check < ' ecx , ' tcx , T : EarlyLintPass > ( self , cx : & mut EarlyContextAndPass < ' ecx , ' tcx , T > ) {
340332 lint_callback ! ( cx, check_crate, self . 0 ) ;
341333 ast_visit:: walk_crate ( cx, self . 0 ) ;
342334 lint_callback ! ( cx, check_crate_post, self . 0 ) ;
@@ -347,16 +339,10 @@ impl<'a> EarlyCheckNode<'a> for (ast::NodeId, &'a [ast::Attribute], &'a [P<ast::
347339 fn id ( self ) -> ast:: NodeId {
348340 self . 0
349341 }
350- fn attrs < ' b > ( self ) -> & ' b [ ast:: Attribute ]
351- where
352- ' a : ' b ,
353- {
342+ fn attrs ( self ) -> & ' a [ ast:: Attribute ] {
354343 self . 1
355344 }
356- fn check < ' b , ' c , T : EarlyLintPass > ( self , cx : & mut EarlyContextAndPass < ' b , ' c , T > )
357- where
358- ' a : ' b ,
359- {
345+ fn check < ' ecx , ' tcx , T : EarlyLintPass > ( self , cx : & mut EarlyContextAndPass < ' ecx , ' tcx , T > ) {
360346 walk_list ! ( cx, visit_attribute, self . 1 ) ;
361347 walk_list ! ( cx, visit_item, self . 2 ) ;
362348 }
0 commit comments