@@ -66,7 +66,7 @@ impl BoundKind {
66
66
#[ derive( Copy , Clone , Debug ) ]
67
67
pub enum FnKind < ' a > {
68
68
/// E.g., `fn foo()`, `fn foo(&self)`, or `extern "Abi" fn foo()`.
69
- Fn ( FnCtxt , Ident , & ' a FnSig , & ' a Visibility , & ' a Generics , Option < & ' a Block > ) ,
69
+ Fn ( FnCtxt , Ident , & ' a FnSig , & ' a Visibility , & ' a Generics , & ' a FnContract , Option < & ' a Block > ) ,
70
70
71
71
/// E.g., `|x, y| body`.
72
72
Closure ( & ' a ClosureBinder , & ' a Option < CoroutineKind > , & ' a FnDecl , & ' a Expr ) ,
@@ -75,7 +75,7 @@ pub enum FnKind<'a> {
75
75
impl < ' a > FnKind < ' a > {
76
76
pub fn header ( & self ) -> Option < & ' a FnHeader > {
77
77
match * self {
78
- FnKind :: Fn ( _, _, sig, _, _, _) => Some ( & sig. header ) ,
78
+ FnKind :: Fn ( _, _, sig, _, _, _, _ ) => Some ( & sig. header ) ,
79
79
FnKind :: Closure ( ..) => None ,
80
80
}
81
81
}
@@ -89,7 +89,7 @@ impl<'a> FnKind<'a> {
89
89
90
90
pub fn decl ( & self ) -> & ' a FnDecl {
91
91
match self {
92
- FnKind :: Fn ( _, _, sig, _, _, _) => & sig. decl ,
92
+ FnKind :: Fn ( _, _, sig, _, _, _, _ ) => & sig. decl ,
93
93
FnKind :: Closure ( _, _, decl, _) => decl,
94
94
}
95
95
}
@@ -363,8 +363,8 @@ impl WalkItemKind for ItemKind {
363
363
visit_opt ! ( visitor, visit_expr, expr) ;
364
364
}
365
365
ItemKind :: Fn ( box Fn { defaultness : _, generics, sig, contract, body } ) => {
366
- let kind = FnKind :: Fn ( FnCtxt :: Free , * ident, sig, vis, generics, body. as_deref ( ) ) ;
367
- try_visit ! ( visitor. visit_contract( contract) ) ;
366
+ let kind = FnKind :: Fn ( FnCtxt :: Free , * ident, sig, vis, generics, & contract , body. as_deref ( ) ) ;
367
+ // try_visit!(visitor.visit_contract(contract));
368
368
try_visit ! ( visitor. visit_fn( kind, * span, * id) ) ;
369
369
}
370
370
ItemKind :: Mod ( _unsafety, mod_kind) => match mod_kind {
@@ -700,8 +700,8 @@ impl WalkItemKind for ForeignItemKind {
700
700
visit_opt ! ( visitor, visit_expr, expr) ;
701
701
}
702
702
ForeignItemKind :: Fn ( box Fn { defaultness : _, generics, sig, contract, body } ) => {
703
- let kind = FnKind :: Fn ( FnCtxt :: Foreign , ident, sig, vis, generics, body. as_deref ( ) ) ;
704
- try_visit ! ( visitor. visit_contract( contract) ) ;
703
+ let kind = FnKind :: Fn ( FnCtxt :: Foreign , ident, sig, vis, generics, contract , body. as_deref ( ) ) ;
704
+ // try_visit!(visitor.visit_contract(contract));
705
705
try_visit ! ( visitor. visit_fn( kind, span, id) ) ;
706
706
}
707
707
ForeignItemKind :: TyAlias ( box TyAlias {
@@ -849,11 +849,15 @@ pub fn walk_fn_decl<'a, V: Visitor<'a>>(
849
849
850
850
pub fn walk_fn < ' a , V : Visitor < ' a > > ( visitor : & mut V , kind : FnKind < ' a > ) -> V :: Result {
851
851
match kind {
852
- FnKind :: Fn ( _ctxt, _ident, FnSig { header, decl, span : _ } , _vis, generics, body) => {
852
+ FnKind :: Fn ( _ctxt, _ident,
853
+ FnSig { header, decl, span : _ } ,
854
+ _vis, generics, contract, body,
855
+ ) => {
853
856
// Identifier and visibility are visited as a part of the item.
854
857
try_visit ! ( visitor. visit_fn_header( header) ) ;
855
858
try_visit ! ( visitor. visit_generics( generics) ) ;
856
859
try_visit ! ( walk_fn_decl( visitor, decl) ) ;
860
+ try_visit ! ( visitor. visit_contract( contract) ) ;
857
861
visit_opt ! ( visitor, visit_block, body) ;
858
862
}
859
863
FnKind :: Closure ( binder, _coroutine_kind, decl, body) => {
@@ -882,7 +886,7 @@ impl WalkItemKind for AssocItemKind {
882
886
AssocItemKind :: Fn ( box Fn { defaultness : _, generics, sig, contract, body } ) => {
883
887
try_visit ! ( visitor. visit_contract( contract) ) ;
884
888
let kind =
885
- FnKind :: Fn ( FnCtxt :: Assoc ( ctxt) , ident, sig, vis, generics, body. as_deref ( ) ) ;
889
+ FnKind :: Fn ( FnCtxt :: Assoc ( ctxt) , ident, sig, vis, generics, contract , body. as_deref ( ) ) ;
886
890
try_visit ! ( visitor. visit_fn( kind, span, id) ) ;
887
891
}
888
892
AssocItemKind :: Type ( box TyAlias {
0 commit comments