1
Fork 0

Inline Parser::parse_item_common_.

It has a single call site, it isn't that big, and its name is
confusingly similar to `Parser::parse_item_common`.
This commit is contained in:
Nicholas Nethercote 2024-07-16 15:07:42 +10:00
parent 2f305ff460
commit 48cdfc388d

View file

@ -128,23 +128,11 @@ impl<'a> Parser<'a> {
Some(item.into_inner()) Some(item.into_inner())
}); });
self.collect_tokens_trailing_token(attrs, force_collect, |this, attrs| { self.collect_tokens_trailing_token(attrs, force_collect, |this, mut attrs| {
let item = this.parse_item_common_(attrs, mac_allowed, attrs_allowed, fn_parse_mode)?; let lo = this.token.span;
Ok((item, TrailingToken::None)) let vis = this.parse_visibility(FollowedByType::No)?;
}) let mut def = this.parse_defaultness();
} let kind = this.parse_item_kind(
fn parse_item_common_(
&mut self,
mut attrs: AttrVec,
mac_allowed: bool,
attrs_allowed: bool,
fn_parse_mode: FnParseMode,
) -> PResult<'a, Option<Item>> {
let lo = self.token.span;
let vis = self.parse_visibility(FollowedByType::No)?;
let mut def = self.parse_defaultness();
let kind = self.parse_item_kind(
&mut attrs, &mut attrs,
mac_allowed, mac_allowed,
lo, lo,
@ -154,26 +142,27 @@ impl<'a> Parser<'a> {
Case::Sensitive, Case::Sensitive,
)?; )?;
if let Some((ident, kind)) = kind { if let Some((ident, kind)) = kind {
self.error_on_unconsumed_default(def, &kind); this.error_on_unconsumed_default(def, &kind);
let span = lo.to(self.prev_token.span); let span = lo.to(this.prev_token.span);
let id = DUMMY_NODE_ID; let id = DUMMY_NODE_ID;
let item = Item { ident, attrs, id, kind, vis, span, tokens: None }; let item = Item { ident, attrs, id, kind, vis, span, tokens: None };
return Ok(Some(item)); return Ok((Some(item), TrailingToken::None));
} }
// At this point, we have failed to parse an item. // At this point, we have failed to parse an item.
if !matches!(vis.kind, VisibilityKind::Inherited) { if !matches!(vis.kind, VisibilityKind::Inherited) {
self.dcx().emit_err(errors::VisibilityNotFollowedByItem { span: vis.span, vis }); this.dcx().emit_err(errors::VisibilityNotFollowedByItem { span: vis.span, vis });
} }
if let Defaultness::Default(span) = def { if let Defaultness::Default(span) = def {
self.dcx().emit_err(errors::DefaultNotFollowedByItem { span }); this.dcx().emit_err(errors::DefaultNotFollowedByItem { span });
} }
if !attrs_allowed { if !attrs_allowed {
self.recover_attrs_no_item(&attrs)?; this.recover_attrs_no_item(&attrs)?;
} }
Ok(None) Ok((None, TrailingToken::None))
})
} }
/// Error in-case `default` was parsed in an in-appropriate context. /// Error in-case `default` was parsed in an in-appropriate context.