Skip to content

Commit ab4275c

Browse files
committed
fixup! Don't visit foreign function bodies when lowering ast to hir
1 parent 2303939 commit ab4275c

File tree

1 file changed

+12
-31
lines changed

1 file changed

+12
-31
lines changed

src/librustc_ast_lowering/item.rs

+12-31
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)