diff options
| author | Mazdak Farrokhzad <twingoow@gmail.com> | 2019-10-09 13:19:15 +0200 |
|---|---|---|
| committer | Mazdak Farrokhzad <twingoow@gmail.com> | 2019-10-27 16:54:12 +0100 |
| commit | 16329402bff5115135804580386ffa8a9e89f1f9 (patch) | |
| tree | 65a3229916ef3dbc779339485dd6e0e797feee15 /src/libsyntax/attr | |
| parent | b7176b44a203322c834302f3b515f8c10a54f2c1 (diff) | |
| download | rust-16329402bff5115135804580386ffa8a9e89f1f9.tar.gz rust-16329402bff5115135804580386ffa8a9e89f1f9.zip | |
syntax/attr: reduce reliance on parser
Diffstat (limited to 'src/libsyntax/attr')
| -rw-r--r-- | src/libsyntax/attr/mod.rs | 29 |
1 files changed, 2 insertions, 27 deletions
diff --git a/src/libsyntax/attr/mod.rs b/src/libsyntax/attr/mod.rs index 27de084ae98..3e240a855e2 100644 --- a/src/libsyntax/attr/mod.rs +++ b/src/libsyntax/attr/mod.rs @@ -15,7 +15,7 @@ use crate::ast::{Lit, LitKind, Expr, Item, Local, Stmt, StmtKind, GenericParam}; use crate::mut_visit::visit_clobber; use crate::source_map::{BytePos, Spanned}; use crate::parse::lexer::comments::doc_comment_style; -use crate::parse::parser::Parser; +use crate::parse; use crate::parse::PResult; use crate::parse::token::{self, Token}; use crate::ptr::P; @@ -280,35 +280,10 @@ impl Attribute { self.item.meta(self.span) } - crate fn parse<'a, T, F>(&self, sess: &'a ParseSess, mut f: F) -> PResult<'a, T> - where F: FnMut(&mut Parser<'a>) -> PResult<'a, T>, - { - let mut parser = Parser::new( - sess, - self.tokens.clone(), - None, - false, - false, - Some("attribute"), - ); - let result = f(&mut parser)?; - if parser.token != token::Eof { - parser.unexpected()?; - } - Ok(result) - } - - pub fn parse_derive_paths<'a>(&self, sess: &'a ParseSess) -> PResult<'a, Vec<Path>> { - if self.tokens.is_empty() { - return Ok(Vec::new()); - } - self.parse(sess, |p| p.parse_derive_paths()) - } - pub fn parse_meta<'a>(&self, sess: &'a ParseSess) -> PResult<'a, MetaItem> { Ok(MetaItem { path: self.path.clone(), - kind: self.parse(sess, |parser| parser.parse_meta_item_kind())?, + kind: parse::parse_in_attr(sess, self, |p| p.parse_meta_item_kind())?, span: self.span, }) } |
