@@ -77,39 +77,20 @@ impl<'a> Visitor<'a> for ItemLowerer<'a, '_, '_> {
77
77
}
78
78
}
79
79
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 ) ;
92
85
}
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) ;
110
90
}
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) ;
113
94
}
114
95
}
115
96
}
0 commit comments