Rollup merge of #138376 - nnethercote:hir-ItemKind-ident-precursors, r=compiler-errors
Item-related cleanups I have been looking at `hir::Item` closely and found a few minor cleanup opportunities. r? ```@spastorino```
This commit is contained in:
commit
4c6edb1df8
3 changed files with 24 additions and 56 deletions
|
@ -4332,16 +4332,6 @@ pub enum OwnerNode<'hir> {
|
|||
}
|
||||
|
||||
impl<'hir> OwnerNode<'hir> {
|
||||
pub fn ident(&self) -> Option<Ident> {
|
||||
match self {
|
||||
OwnerNode::Item(Item { ident, .. })
|
||||
| OwnerNode::ForeignItem(ForeignItem { ident, .. })
|
||||
| OwnerNode::ImplItem(ImplItem { ident, .. })
|
||||
| OwnerNode::TraitItem(TraitItem { ident, .. }) => Some(*ident),
|
||||
OwnerNode::Crate(..) | OwnerNode::Synthetic => None,
|
||||
}
|
||||
}
|
||||
|
||||
pub fn span(&self) -> Span {
|
||||
match self {
|
||||
OwnerNode::Item(Item { span, .. })
|
||||
|
|
|
@ -553,24 +553,6 @@ impl<'a> State<'a> {
|
|||
self.word(";")
|
||||
}
|
||||
|
||||
fn print_item_type(
|
||||
&mut self,
|
||||
item: &hir::Item<'_>,
|
||||
generics: &hir::Generics<'_>,
|
||||
inner: impl Fn(&mut Self),
|
||||
) {
|
||||
self.head("type");
|
||||
self.print_ident(item.ident);
|
||||
self.print_generic_params(generics.params);
|
||||
self.end(); // end the inner ibox
|
||||
|
||||
self.print_where_clause(generics);
|
||||
self.space();
|
||||
inner(self);
|
||||
self.word(";");
|
||||
self.end(); // end the outer ibox
|
||||
}
|
||||
|
||||
fn print_item(&mut self, item: &hir::Item<'_>) {
|
||||
self.hardbreak_if_not_bol();
|
||||
self.maybe_print_comment(item.span.lo());
|
||||
|
@ -683,10 +665,17 @@ impl<'a> State<'a> {
|
|||
self.end()
|
||||
}
|
||||
hir::ItemKind::TyAlias(ty, generics) => {
|
||||
self.print_item_type(item, generics, |state| {
|
||||
state.word_space("=");
|
||||
state.print_type(ty);
|
||||
});
|
||||
self.head("type");
|
||||
self.print_ident(item.ident);
|
||||
self.print_generic_params(generics.params);
|
||||
self.end(); // end the inner ibox
|
||||
|
||||
self.print_where_clause(generics);
|
||||
self.space();
|
||||
self.word_space("=");
|
||||
self.print_type(ty);
|
||||
self.word(";");
|
||||
self.end(); // end the outer ibox
|
||||
}
|
||||
hir::ItemKind::Enum(ref enum_definition, params) => {
|
||||
self.print_enum_def(enum_definition, params, item.ident.name, item.span);
|
||||
|
|
|
@ -646,7 +646,7 @@ impl<'a> Parser<'a> {
|
|||
|
||||
let impl_items = self.parse_item_list(attrs, |p| p.parse_impl_item(ForceCollect::No))?;
|
||||
|
||||
let item_kind = match ty_second {
|
||||
let (of_trait, self_ty) = match ty_second {
|
||||
Some(ty_second) => {
|
||||
// impl Trait for Type
|
||||
if !has_for {
|
||||
|
@ -679,31 +679,20 @@ impl<'a> Parser<'a> {
|
|||
};
|
||||
let trait_ref = TraitRef { path, ref_id: ty_first.id };
|
||||
|
||||
ItemKind::Impl(Box::new(Impl {
|
||||
safety,
|
||||
polarity,
|
||||
defaultness,
|
||||
constness,
|
||||
generics,
|
||||
of_trait: Some(trait_ref),
|
||||
self_ty: ty_second,
|
||||
items: impl_items,
|
||||
}))
|
||||
}
|
||||
None => {
|
||||
// impl Type
|
||||
ItemKind::Impl(Box::new(Impl {
|
||||
safety,
|
||||
polarity,
|
||||
defaultness,
|
||||
constness,
|
||||
generics,
|
||||
of_trait: None,
|
||||
self_ty: ty_first,
|
||||
items: impl_items,
|
||||
}))
|
||||
(Some(trait_ref), ty_second)
|
||||
}
|
||||
None => (None, ty_first), // impl Type
|
||||
};
|
||||
let item_kind = ItemKind::Impl(Box::new(Impl {
|
||||
safety,
|
||||
polarity,
|
||||
defaultness,
|
||||
constness,
|
||||
generics,
|
||||
of_trait,
|
||||
self_ty,
|
||||
items: impl_items,
|
||||
}));
|
||||
|
||||
Ok((Ident::empty(), item_kind))
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue