@@ -77,39 +77,20 @@ impl<'a> Visitor<'a> for ItemLowerer<'a, '_, '_> {
7777 }
7878 }
7979
80- // Forked from the original method because we don't want to descend into foreign function
81- // blocks. Such blocks are semantically invalid and the hir does not preserve them, so lowering
82- // items contained in them may be unexpected by later passes.
83- fn visit_foreign_item ( & mut self , item : & ' a ForeignItem ) {
84- let Item { id : _, span : _, ident, ref vis, ref attrs, ref kind, tokens : _ } = * item;
85- self . visit_vis ( vis) ;
86- self . visit_ident ( ident) ;
87- walk_list ! ( self , visit_attribute, attrs) ;
88- match kind {
89- ForeignItemKind :: Static ( ty, _, expr) => {
90- self . visit_ty ( ty) ;
91- walk_list ! ( self , visit_expr, expr) ;
80+ fn visit_fn ( & mut self , fk : FnKind < ' a > , _: Span , _: NodeId ) {
81+ match fk {
82+ FnKind :: Fn ( FnCtxt :: Foreign , _, sig, _, _) => {
83+ self . visit_fn_header ( & sig. header ) ;
84+ visit:: walk_fn_decl ( self , & sig. decl ) ;
9285 }
93- ForeignItemKind :: Fn ( _, sig, generics, body) => {
94- self . visit_generics ( generics) ;
95- let kind = FnKind :: Fn ( FnCtxt :: Foreign , ident, sig, vis, body. as_deref ( ) ) ;
96- match kind {
97- FnKind :: Fn ( _, _, sig, _, _) => {
98- self . visit_fn_header ( & sig. header ) ;
99- visit:: walk_fn_decl ( self , & sig. decl ) ;
100- }
101- FnKind :: Closure ( decl, _) => {
102- visit:: walk_fn_decl ( self , decl) ;
103- }
104- }
105- }
106- ForeignItemKind :: TyAlias ( _, generics, bounds, ty) => {
107- self . visit_generics ( generics) ;
108- walk_list ! ( self , visit_param_bound, bounds) ;
109- walk_list ! ( self , visit_ty, ty) ;
86+ FnKind :: Fn ( _, _, sig, _, body) => {
87+ self . visit_fn_header ( & sig. header ) ;
88+ visit:: walk_fn_decl ( self , & sig. decl ) ;
89+ walk_list ! ( self , visit_block, body) ;
11090 }
111- ForeignItemKind :: MacCall ( mac) => {
112- self . visit_mac ( mac) ;
91+ FnKind :: Closure ( decl, body) => {
92+ visit:: walk_fn_decl ( self , decl) ;
93+ self . visit_expr ( body) ;
11394 }
11495 }
11596 }
0 commit comments