Skip to content

Refactor expression parsing thoroughly #67112

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 32 commits into from
Dec 29, 2019
Merged
Changes from 1 commit
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
e77b9d3
refactor parse_field
Centril Dec 4, 2019
8480b31
extract recover_struct_comma_after_dotdot
Centril Dec 4, 2019
701b974
extract find_struct_error_after_field_looking_code
Centril Dec 4, 2019
66b8ae4
extract error_struct_lit_not_allowed_here
Centril Dec 4, 2019
f6e2bdc
extract is_certainly_not_a_block
Centril Dec 4, 2019
de2e443
make parse_async_block conventional
Centril Dec 6, 2019
7262dcc
refactor loop parsing a bit
Centril Dec 6, 2019
44ff4df
more recovery in if-parsing
Centril Dec 6, 2019
7bcc325
refactor parse_if_expr
Centril Dec 6, 2019
ad6f91a
refactor parse_fn_block_param
Centril Dec 6, 2019
f647c11
simplify parse_fn_block_decl
Centril Dec 6, 2019
aa8adba
simplify parse_literal_maybe_minus
Centril Dec 6, 2019
0bb3dad
extract error_float_lits-must_have_int_part
Centril Dec 6, 2019
98701b2
extract parse_index_expr & refactor parse_dot_suffix
Centril Dec 6, 2019
287ba5d
extract parse_fn_call_expr
Centril Dec 6, 2019
a15d0cd
extract parse_tuple_field_access_expr
Centril Dec 6, 2019
ff5762b
extract recover_field_access_by_float_lit
Centril Dec 6, 2019
9c6bbf1
extract error_unexpected_after_dot and de-fatalize
Centril Dec 6, 2019
bc95228
extract parse_dot_suffix_expr
Centril Dec 7, 2019
7ae12c9
extract parse_dot_base_expr
Centril Dec 7, 2019
af5ac23
simplify parse_dot_call_or_expr
Centril Dec 7, 2019
84f9bf1
refactor parse_address_of -> parse_borrow_expr
Centril Dec 7, 2019
00cc8a1
simplify parse_assoc_op_cast
Centril Dec 7, 2019
80eeefb
extract recover_not_expr
Centril Dec 7, 2019
ada388b
extract is_mistaken_not_ident_negation
Centril Dec 7, 2019
f6ab439
extract parse_deref_expr
Centril Dec 7, 2019
4cfcfe9
extract parse_neg_expr
Centril Dec 7, 2019
efdea63
extract parse_prefix_expr
Centril Dec 7, 2019
8456c40
extract parse_not_expr
Centril Dec 7, 2019
e43a7ef
simplify parse_prefix_range_expr
Centril Dec 7, 2019
05c26a4
refactor assoc op parsing
Centril Dec 7, 2019
7a246ac
fix rebase fallout
Centril Dec 23, 2019
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
Prev Previous commit
Next Next commit
simplify parse_literal_maybe_minus
  • Loading branch information
Centril committed Dec 23, 2019
commit aa8adba8fbd408d94af21fbf768ffab95f7866ef
12 changes: 4 additions & 8 deletions src/librustc_parse/parser/expr.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1280,17 +1280,13 @@ impl<'a> Parser<'a> {
pub fn parse_literal_maybe_minus(&mut self) -> PResult<'a, P<Expr>> {
maybe_whole_expr!(self);

let minus_lo = self.token.span;
let minus_present = self.eat(&token::BinOp(token::Minus));
let lo = self.token.span;
let literal = self.parse_lit()?;
let hi = self.prev_span;
let expr = self.mk_expr(lo.to(hi), ExprKind::Lit(literal), AttrVec::new());
let minus_present = self.eat(&token::BinOp(token::Minus));
let lit = self.parse_lit()?;
let expr = self.mk_expr(lit.span, ExprKind::Lit(lit), AttrVec::new());

if minus_present {
let minus_hi = self.prev_span;
let unary = self.mk_unary(UnOp::Neg, expr);
Ok(self.mk_expr(minus_lo.to(minus_hi), unary, AttrVec::new()))
Ok(self.mk_expr(lo.to(self.prev_span), self.mk_unary(UnOp::Neg, expr), AttrVec::new()))
} else {
Ok(expr)
}
Expand Down