X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=compiler%2Frustc_parse%2Fsrc%2Fparser%2Fattr.rs;h=1b26fb3337043dc29845035817c11b4aa10bd12c;hb=a961e6785c7ed33a532bb6172ae0c95f44db5726;hp=41985757b57af4906812c7682b8774f31cd2c63b;hpb=c9c57fadc47c8ad986808fc0a47479f6d2043453;p=rust.git diff --git a/compiler/rustc_parse/src/parser/attr.rs b/compiler/rustc_parse/src/parser/attr.rs index 41985757b57..1b26fb33370 100644 --- a/compiler/rustc_parse/src/parser/attr.rs +++ b/compiler/rustc_parse/src/parser/attr.rs @@ -8,8 +8,9 @@ use tracing::debug; +// Public for rustfmt usage #[derive(Debug)] -pub(super) enum InnerAttrPolicy<'a> { +pub enum InnerAttrPolicy<'a> { Permitted, Forbidden { reason: &'a str, saw_doc_comment: bool, prev_attr_sp: Option }, } @@ -78,7 +79,8 @@ pub(super) fn parse_outer_attributes(&mut self) -> PResult<'a, Vec, ) -> PResult<'a, ast::Attribute> { @@ -87,7 +89,7 @@ fn parse_attribute( inner_parse_policy, self.token ); let lo = self.token.span; - let ((item, style, span), tokens) = self.collect_tokens(|this| { + self.collect_tokens(|this| { if this.eat(&token::Pound) { let style = if this.eat(&token::Not) { ast::AttrStyle::Inner @@ -105,15 +107,13 @@ fn parse_attribute( this.error_on_forbidden_inner_attr(attr_sp, inner_parse_policy); } - Ok((item, style, attr_sp)) + Ok(attr::mk_attr_from_item(item, None, style, attr_sp)) } else { let token_str = pprust::token_to_string(&this.token); let msg = &format!("expected `#`, found `{}`", token_str); Err(this.struct_span_err(this.token.span, msg)) } - })?; - - Ok(attr::mk_attr_from_item(item, tokens, style, span)) + }) } pub(super) fn error_on_forbidden_inner_attr(&self, attr_sp: Span, policy: InnerAttrPolicy<'_>) { @@ -163,13 +163,7 @@ pub fn parse_attr_item(&mut self, capture_tokens: bool) -> PResult<'a, ast::Attr let args = this.parse_attr_args()?; Ok(ast::AttrItem { path, args, tokens: None }) }; - if capture_tokens { - let (mut item, tokens) = self.collect_tokens(do_parse)?; - item.tokens = tokens; - item - } else { - do_parse(self)? - } + if capture_tokens { self.collect_tokens(do_parse) } else { do_parse(self) }? }) }