ast: Generalize item kind visiting
And avoid duplicating logic for visiting `Item`s with different kinds (regular, associated, foreign).
This commit is contained in:
parent
38dd569150
commit
5be9fdd636
18 changed files with 410 additions and 382 deletions
|
@ -1218,7 +1218,7 @@ impl InvocationCollectorNode for AstNodeWrapper<P<ast::AssocItem>, TraitItemTag>
|
|||
fragment.make_trait_items()
|
||||
}
|
||||
fn noop_flat_map<V: MutVisitor>(self, visitor: &mut V) -> Self::OutputTy {
|
||||
noop_flat_map_assoc_item(self.wrapped, visitor)
|
||||
noop_flat_map_item(self.wrapped, visitor)
|
||||
}
|
||||
fn is_mac_call(&self) -> bool {
|
||||
matches!(self.wrapped.kind, AssocItemKind::MacCall(..))
|
||||
|
@ -1243,7 +1243,7 @@ impl InvocationCollectorNode for AstNodeWrapper<P<ast::AssocItem>, ImplItemTag>
|
|||
fragment.make_impl_items()
|
||||
}
|
||||
fn noop_flat_map<V: MutVisitor>(self, visitor: &mut V) -> Self::OutputTy {
|
||||
noop_flat_map_assoc_item(self.wrapped, visitor)
|
||||
noop_flat_map_item(self.wrapped, visitor)
|
||||
}
|
||||
fn is_mac_call(&self) -> bool {
|
||||
matches!(self.wrapped.kind, AssocItemKind::MacCall(..))
|
||||
|
@ -1266,7 +1266,7 @@ impl InvocationCollectorNode for P<ast::ForeignItem> {
|
|||
fragment.make_foreign_items()
|
||||
}
|
||||
fn noop_flat_map<V: MutVisitor>(self, visitor: &mut V) -> Self::OutputTy {
|
||||
noop_flat_map_foreign_item(self, visitor)
|
||||
noop_flat_map_item(self, visitor)
|
||||
}
|
||||
fn is_mac_call(&self) -> bool {
|
||||
matches!(self.kind, ForeignItemKind::MacCall(..))
|
||||
|
|
|
@ -271,14 +271,14 @@ impl MutVisitor for PlaceholderExpander {
|
|||
fn flat_map_trait_item(&mut self, item: P<ast::AssocItem>) -> SmallVec<[P<ast::AssocItem>; 1]> {
|
||||
match item.kind {
|
||||
ast::AssocItemKind::MacCall(_) => self.remove(item.id).make_trait_items(),
|
||||
_ => noop_flat_map_assoc_item(item, self),
|
||||
_ => noop_flat_map_item(item, self),
|
||||
}
|
||||
}
|
||||
|
||||
fn flat_map_impl_item(&mut self, item: P<ast::AssocItem>) -> SmallVec<[P<ast::AssocItem>; 1]> {
|
||||
match item.kind {
|
||||
ast::AssocItemKind::MacCall(_) => self.remove(item.id).make_impl_items(),
|
||||
_ => noop_flat_map_assoc_item(item, self),
|
||||
_ => noop_flat_map_item(item, self),
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -288,7 +288,7 @@ impl MutVisitor for PlaceholderExpander {
|
|||
) -> SmallVec<[P<ast::ForeignItem>; 1]> {
|
||||
match item.kind {
|
||||
ast::ForeignItemKind::MacCall(_) => self.remove(item.id).make_foreign_items(),
|
||||
_ => noop_flat_map_foreign_item(item, self),
|
||||
_ => noop_flat_map_item(item, self),
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue