1
Fork 0

Factor out some repeated code in parse_item_impl.

This commit is contained in:
Nicholas Nethercote 2025-03-07 20:41:31 +11:00
parent ed10418363
commit ee9ef82795

View file

@ -646,7 +646,7 @@ impl<'a> Parser<'a> {
let impl_items = self.parse_item_list(attrs, |p| p.parse_impl_item(ForceCollect::No))?; 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) => { Some(ty_second) => {
// impl Trait for Type // impl Trait for Type
if !has_for { if !has_for {
@ -679,31 +679,20 @@ impl<'a> Parser<'a> {
}; };
let trait_ref = TraitRef { path, ref_id: ty_first.id }; let trait_ref = TraitRef { path, ref_id: ty_first.id };
ItemKind::Impl(Box::new(Impl { (Some(trait_ref), ty_second)
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,
}))
} }
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)) Ok((Ident::empty(), item_kind))
} }