@@ -35,7 +35,7 @@ pub enum FnCtxt {
35
35
#[ derive( Copy , Clone , Debug ) ]
36
36
pub enum FnKind < ' a > {
37
37
/// E.g., `fn foo()`, `fn foo(&self)`, or `extern "Abi" fn foo()`.
38
- Fn ( FnCtxt , Ident , & ' a FnSig , & ' a Visibility , Option < & ' a Block > ) ,
38
+ Fn ( FnCtxt , Ident , & ' a FnSig , & ' a Visibility , & ' a Generics , Option < & ' a Block > ) ,
39
39
40
40
/// E.g., `|x, y| body`.
41
41
Closure ( & ' a FnDecl , & ' a Expr ) ,
@@ -44,7 +44,7 @@ pub enum FnKind<'a> {
44
44
impl < ' a > FnKind < ' a > {
45
45
pub fn header ( & self ) -> Option < & ' a FnHeader > {
46
46
match * self {
47
- FnKind :: Fn ( _, _, sig, _, _) => Some ( & sig. header ) ,
47
+ FnKind :: Fn ( _, _, sig, _, _, _ ) => Some ( & sig. header ) ,
48
48
FnKind :: Closure ( _, _) => None ,
49
49
}
50
50
}
@@ -58,7 +58,7 @@ impl<'a> FnKind<'a> {
58
58
59
59
pub fn decl ( & self ) -> & ' a FnDecl {
60
60
match self {
61
- FnKind :: Fn ( _, _, sig, _, _) => & sig. decl ,
61
+ FnKind :: Fn ( _, _, sig, _, _, _ ) => & sig. decl ,
62
62
FnKind :: Closure ( decl, _) => decl,
63
63
}
64
64
}
@@ -295,8 +295,8 @@ pub fn walk_item<'a, V: Visitor<'a>>(visitor: &mut V, item: &'a Item) {
295
295
walk_list ! ( visitor, visit_expr, expr) ;
296
296
}
297
297
ItemKind :: Fn ( box Fn { defaultness : _, ref generics, ref sig, ref body } ) => {
298
- visitor . visit_generics ( generics ) ;
299
- let kind = FnKind :: Fn ( FnCtxt :: Free , item. ident , sig, & item. vis , body. as_deref ( ) ) ;
298
+ let kind =
299
+ FnKind :: Fn ( FnCtxt :: Free , item. ident , sig, & item. vis , generics , body. as_deref ( ) ) ;
300
300
visitor. visit_fn ( kind, item. span , item. id )
301
301
}
302
302
ItemKind :: Mod ( _unsafety, ref mod_kind) => match mod_kind {
@@ -561,8 +561,7 @@ pub fn walk_foreign_item<'a, V: Visitor<'a>>(visitor: &mut V, item: &'a ForeignI
561
561
walk_list ! ( visitor, visit_expr, expr) ;
562
562
}
563
563
ForeignItemKind :: Fn ( box Fn { defaultness : _, ref generics, ref sig, ref body } ) => {
564
- visitor. visit_generics ( generics) ;
565
- let kind = FnKind :: Fn ( FnCtxt :: Foreign , ident, sig, vis, body. as_deref ( ) ) ;
564
+ let kind = FnKind :: Fn ( FnCtxt :: Foreign , ident, sig, vis, generics, body. as_deref ( ) ) ;
566
565
visitor. visit_fn ( kind, span, id) ;
567
566
}
568
567
ForeignItemKind :: TyAlias ( box TyAlias { generics, bounds, ty, .. } ) => {
@@ -644,7 +643,8 @@ pub fn walk_fn_decl<'a, V: Visitor<'a>>(visitor: &mut V, function_declaration: &
644
643
645
644
pub fn walk_fn < ' a , V : Visitor < ' a > > ( visitor : & mut V , kind : FnKind < ' a > , _span : Span ) {
646
645
match kind {
647
- FnKind :: Fn ( _, _, sig, _, body) => {
646
+ FnKind :: Fn ( _, _, sig, _, generics, body) => {
647
+ visitor. visit_generics ( generics) ;
648
648
visitor. visit_fn_header ( & sig. header ) ;
649
649
walk_fn_decl ( visitor, & sig. decl ) ;
650
650
walk_list ! ( visitor, visit_block, body) ;
@@ -667,8 +667,7 @@ pub fn walk_assoc_item<'a, V: Visitor<'a>>(visitor: &mut V, item: &'a AssocItem,
667
667
walk_list ! ( visitor, visit_expr, expr) ;
668
668
}
669
669
AssocItemKind :: Fn ( box Fn { defaultness : _, ref generics, ref sig, ref body } ) => {
670
- visitor. visit_generics ( generics) ;
671
- let kind = FnKind :: Fn ( FnCtxt :: Assoc ( ctxt) , ident, sig, vis, body. as_deref ( ) ) ;
670
+ let kind = FnKind :: Fn ( FnCtxt :: Assoc ( ctxt) , ident, sig, vis, generics, body. as_deref ( ) ) ;
672
671
visitor. visit_fn ( kind, span, id) ;
673
672
}
674
673
AssocItemKind :: TyAlias ( box TyAlias { generics, bounds, ty, .. } ) => {
0 commit comments