change if/else to match
This commit is contained in:
parent
f3fa836939
commit
9f94f823b0
1 changed files with 206 additions and 188 deletions
|
@ -1877,7 +1877,8 @@ impl<'a> Parser<'a> {
|
|||
|
||||
let ex: Expr_;
|
||||
|
||||
if self.token == token::LPAREN {
|
||||
match self.token {
|
||||
token::LPAREN => {
|
||||
self.bump();
|
||||
// (e) is parenthesized e
|
||||
// (e,) is a tuple with only one field, e
|
||||
|
@ -1909,14 +1910,17 @@ impl<'a> Parser<'a> {
|
|||
else {
|
||||
self.mk_expr(lo, hi, ExprTup(es))
|
||||
}
|
||||
} else if self.token == token::LBRACE {
|
||||
},
|
||||
token::LBRACE => {
|
||||
self.bump();
|
||||
let blk = self.parse_block_tail(lo, DefaultBlock);
|
||||
return self.mk_expr(blk.span.lo, blk.span.hi,
|
||||
ExprBlock(blk));
|
||||
} else if token::is_bar(&self.token) {
|
||||
},
|
||||
_ if token::is_bar(&self.token) => {
|
||||
return self.parse_lambda_expr();
|
||||
} else if self.eat_keyword(keywords::Proc) {
|
||||
},
|
||||
_ if self.eat_keyword(keywords::Proc) => {
|
||||
let decl = self.parse_proc_decl();
|
||||
let body = self.parse_expr();
|
||||
let fakeblock = P(ast::Block {
|
||||
|
@ -1927,19 +1931,23 @@ impl<'a> Parser<'a> {
|
|||
rules: DefaultBlock,
|
||||
span: body.span,
|
||||
});
|
||||
|
||||
return self.mk_expr(lo, body.span.hi, ExprProc(decl, fakeblock));
|
||||
} else if self.eat_keyword(keywords::Self) {
|
||||
},
|
||||
_ if self.eat_keyword(keywords::Self) => {
|
||||
let path = ast_util::ident_to_path(mk_sp(lo, hi), special_idents::self_);
|
||||
ex = ExprPath(path);
|
||||
hi = self.last_span.hi;
|
||||
} else if self.eat_keyword(keywords::If) {
|
||||
}
|
||||
_ if self.eat_keyword(keywords::If) => {
|
||||
return self.parse_if_expr();
|
||||
} else if self.eat_keyword(keywords::For) {
|
||||
},
|
||||
_ if self.eat_keyword(keywords::For) => {
|
||||
return self.parse_for_expr(None);
|
||||
} else if self.eat_keyword(keywords::While) {
|
||||
},
|
||||
_ if self.eat_keyword(keywords::While) => {
|
||||
return self.parse_while_expr();
|
||||
} else if Parser::token_is_lifetime(&self.token) {
|
||||
},
|
||||
_ if Parser::token_is_lifetime(&self.token) => {
|
||||
let lifetime = self.get_lifetime();
|
||||
self.bump();
|
||||
self.expect(&token::COLON);
|
||||
|
@ -1950,9 +1958,11 @@ impl<'a> Parser<'a> {
|
|||
} else {
|
||||
self.fatal("expected `for` or `loop` after a label")
|
||||
}
|
||||
} else if self.eat_keyword(keywords::Loop) {
|
||||
},
|
||||
_ if self.eat_keyword(keywords::Loop) => {
|
||||
return self.parse_loop_expr(None);
|
||||
} else if self.eat_keyword(keywords::Continue) {
|
||||
},
|
||||
_ if self.eat_keyword(keywords::Continue) => {
|
||||
let lo = self.span.lo;
|
||||
let ex = if Parser::token_is_lifetime(&self.token) {
|
||||
let lifetime = self.get_lifetime();
|
||||
|
@ -1963,11 +1973,14 @@ impl<'a> Parser<'a> {
|
|||
};
|
||||
let hi = self.span.hi;
|
||||
return self.mk_expr(lo, hi, ex);
|
||||
} else if self.eat_keyword(keywords::Match) {
|
||||
},
|
||||
_ if self.eat_keyword(keywords::Match) => {
|
||||
return self.parse_match_expr();
|
||||
} else if self.eat_keyword(keywords::Unsafe) {
|
||||
},
|
||||
_ if self.eat_keyword(keywords::Unsafe) => {
|
||||
return self.parse_block_expr(lo, UnsafeBlock(ast::UserProvided));
|
||||
} else if self.token == token::LBRACKET {
|
||||
},
|
||||
token::LBRACKET => {
|
||||
self.bump();
|
||||
|
||||
if self.token == token::RBRACKET {
|
||||
|
@ -2003,14 +2016,16 @@ impl<'a> Parser<'a> {
|
|||
}
|
||||
}
|
||||
hi = self.last_span.hi;
|
||||
} else if self.eat_keyword(keywords::Return) {
|
||||
},
|
||||
_ if self.eat_keyword(keywords::Return) => {
|
||||
// RETURN expression
|
||||
if can_begin_expr(&self.token) {
|
||||
let e = self.parse_expr();
|
||||
hi = e.span.hi;
|
||||
ex = ExprRet(Some(e));
|
||||
} else { ex = ExprRet(None); }
|
||||
} else if self.eat_keyword(keywords::Break) {
|
||||
},
|
||||
_ if self.eat_keyword(keywords::Break) => {
|
||||
// BREAK expression
|
||||
if Parser::token_is_lifetime(&self.token) {
|
||||
let lifetime = self.get_lifetime();
|
||||
|
@ -2020,9 +2035,10 @@ impl<'a> Parser<'a> {
|
|||
ex = ExprBreak(None);
|
||||
}
|
||||
hi = self.span.hi;
|
||||
} else if self.token == token::MOD_SEP ||
|
||||
},
|
||||
_ if self.token == token::MOD_SEP ||
|
||||
is_ident(&self.token) && !self.is_keyword(keywords::True) &&
|
||||
!self.is_keyword(keywords::False) {
|
||||
!self.is_keyword(keywords::False) => {
|
||||
let pth = self.parse_path(LifetimeAndTypesWithColons).path;
|
||||
|
||||
// `!`, as an operator, is prefix, so we know this isn't that
|
||||
|
@ -2077,12 +2093,14 @@ impl<'a> Parser<'a> {
|
|||
|
||||
hi = pth.span.hi;
|
||||
ex = ExprPath(pth);
|
||||
} else {
|
||||
},
|
||||
_ => {
|
||||
// other literal expression
|
||||
let lit = self.parse_lit();
|
||||
hi = lit.span.hi;
|
||||
ex = ExprLit(box(GC) lit);
|
||||
}
|
||||
}
|
||||
|
||||
return self.mk_expr(lo, hi, ex);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue