Skip to content

rustfmt syntax::parse #31244

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Jan 30, 2016
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
68 changes: 34 additions & 34 deletions src/libsyntax/parse/attr.rs
Original file line number Diff line number Diff line change
Expand Up @@ -22,26 +22,25 @@ impl<'a> Parser<'a> {
pub fn parse_outer_attributes(&mut self) -> PResult<'a, Vec<ast::Attribute>> {
let mut attrs: Vec<ast::Attribute> = Vec::new();
loop {
debug!("parse_outer_attributes: self.token={:?}",
self.token);
debug!("parse_outer_attributes: self.token={:?}", self.token);
match self.token {
token::Pound => {
attrs.push(try!(self.parse_attribute(false)));
}
token::DocComment(s) => {
let attr = ::attr::mk_sugared_doc_attr(
token::Pound => {
attrs.push(try!(self.parse_attribute(false)));
}
token::DocComment(s) => {
let attr = ::attr::mk_sugared_doc_attr(
attr::mk_attr_id(),
self.id_to_interned_str(ast::Ident::with_empty_ctxt(s)),
self.span.lo,
self.span.hi
);
if attr.node.style != ast::AttrStyle::Outer {
return Err(self.fatal("expected outer comment"));
if attr.node.style != ast::AttrStyle::Outer {
return Err(self.fatal("expected outer comment"));
}
attrs.push(attr);
self.bump();
}
attrs.push(attr);
self.bump();
}
_ => break
_ => break,
}
}
return Ok(attrs);
Expand All @@ -53,24 +52,27 @@ impl<'a> Parser<'a> {
/// attribute
pub fn parse_attribute(&mut self, permit_inner: bool) -> PResult<'a, ast::Attribute> {
debug!("parse_attributes: permit_inner={:?} self.token={:?}",
permit_inner, self.token);
permit_inner,
self.token);
let (span, value, mut style) = match self.token {
token::Pound => {
let lo = self.span.lo;
self.bump();

if permit_inner { self.expected_tokens.push(TokenType::Token(token::Not)); }
if permit_inner {
self.expected_tokens.push(TokenType::Token(token::Not));
}
let style = if self.token == token::Not {
self.bump();
if !permit_inner {
let span = self.span;
self.diagnostic().struct_span_err(span,
"an inner attribute is not permitted in \
this context")
.fileline_help(span,
"place inner attribute at the top of \
the module or block")
.emit()
self.diagnostic()
.struct_span_err(span,
"an inner attribute is not permitted in this context")
.fileline_help(span,
"place inner attribute at the top of the module or \
block")
.emit()
}
ast::AttrStyle::Inner
} else {
Expand All @@ -92,8 +94,9 @@ impl<'a> Parser<'a> {

if permit_inner && self.token == token::Semi {
self.bump();
self.span_warn(span, "this inner attribute syntax is deprecated. \
The new syntax is `#![foo]`, with a bang and no semicolon");
self.span_warn(span,
"this inner attribute syntax is deprecated. The new syntax is \
`#![foo]`, with a bang and no semicolon");
style = ast::AttrStyle::Inner;
}

Expand All @@ -103,8 +106,8 @@ impl<'a> Parser<'a> {
id: attr::mk_attr_id(),
style: style,
value: value,
is_sugared_doc: false
}
is_sugared_doc: false,
},
})
}

Expand Down Expand Up @@ -139,7 +142,7 @@ impl<'a> Parser<'a> {
break;
}
}
_ => break
_ => break,
}
}
Ok(attrs)
Expand All @@ -150,10 +153,8 @@ impl<'a> Parser<'a> {
/// | IDENT meta_seq
pub fn parse_meta_item(&mut self) -> PResult<'a, P<ast::MetaItem>> {
let nt_meta = match self.token {
token::Interpolated(token::NtMeta(ref e)) => {
Some(e.clone())
}
_ => None
token::Interpolated(token::NtMeta(ref e)) => Some(e.clone()),
_ => None,
};

match nt_meta {
Expand All @@ -176,9 +177,8 @@ impl<'a> Parser<'a> {
match lit.node {
ast::LitStr(..) => {}
_ => {
self.span_err(
lit.span,
"non-string literals are not allowed in meta-items");
self.span_err(lit.span,
"non-string literals are not allowed in meta-items");
}
}
let hi = self.span.hi;
Expand Down
28 changes: 14 additions & 14 deletions src/libsyntax/parse/classify.rs
Original file line number Diff line number Diff line change
Expand Up @@ -23,22 +23,22 @@ use ast;
/// isn't parsed as (if true {...} else {...} | x) | 5
pub fn expr_requires_semi_to_be_stmt(e: &ast::Expr) -> bool {
match e.node {
ast::ExprIf(..)
| ast::ExprIfLet(..)
| ast::ExprMatch(..)
| ast::ExprBlock(_)
| ast::ExprWhile(..)
| ast::ExprWhileLet(..)
| ast::ExprLoop(..)
| ast::ExprForLoop(..) => false,
_ => true
ast::ExprIf(..) |
ast::ExprIfLet(..) |
ast::ExprMatch(..) |
ast::ExprBlock(_) |
ast::ExprWhile(..) |
ast::ExprWhileLet(..) |
ast::ExprLoop(..) |
ast::ExprForLoop(..) => false,
_ => true,
}
}

pub fn expr_is_simple_block(e: &ast::Expr) -> bool {
match e.node {
ast::ExprBlock(ref block) => block.rules == ast::DefaultBlock,
_ => false
_ => false,
}
}

Expand All @@ -50,11 +50,11 @@ pub fn stmt_ends_with_semi(stmt: &ast::Stmt_) -> bool {
ast::StmtDecl(ref d, _) => {
match d.node {
ast::DeclLocal(_) => true,
ast::DeclItem(_) => false
ast::DeclItem(_) => false,
}
}
ast::StmtExpr(ref e, _) => { expr_requires_semi_to_be_stmt(e) }
ast::StmtSemi(..) => { false }
ast::StmtMac(..) => { false }
ast::StmtExpr(ref e, _) => expr_requires_semi_to_be_stmt(e),
ast::StmtSemi(..) => false,
ast::StmtMac(..) => false,
}
}
2 changes: 1 addition & 1 deletion src/libsyntax/parse/common.rs
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ use parse::token;
/// and whether a trailing separator is allowed.
pub struct SeqSep {
pub sep: Option<token::Token>,
pub trailing_sep_allowed: bool
pub trailing_sep_allowed: bool,
}

pub fn seq_sep_trailing_allowed(t: token::Token) -> SeqSep {
Expand Down