Rollup merge of #108496 - nx2k3:issue-108495-dec, r=WaffleLapkin
fix #108495, postfix decrement and prefix decrement has no warning Fixes #108495
This commit is contained in:
commit
1c3cc8bba5
4 changed files with 134 additions and 2 deletions
|
@ -165,8 +165,6 @@ enum IsStandalone {
|
|||
#[derive(Debug, Copy, Clone, PartialEq, Eq)]
|
||||
enum IncOrDec {
|
||||
Inc,
|
||||
// FIXME: `i--` recovery isn't implemented yet
|
||||
#[allow(dead_code)]
|
||||
Dec,
|
||||
}
|
||||
|
||||
|
@ -1357,6 +1355,20 @@ impl<'a> Parser<'a> {
|
|||
self.recover_from_inc_dec(operand_expr, kind, op_span)
|
||||
}
|
||||
|
||||
pub(super) fn recover_from_postfix_decrement(
|
||||
&mut self,
|
||||
operand_expr: P<Expr>,
|
||||
op_span: Span,
|
||||
start_stmt: bool,
|
||||
) -> PResult<'a, P<Expr>> {
|
||||
let kind = IncDecRecovery {
|
||||
standalone: if start_stmt { IsStandalone::Standalone } else { IsStandalone::Subexpr },
|
||||
op: IncOrDec::Dec,
|
||||
fixity: UnaryFixity::Post,
|
||||
};
|
||||
self.recover_from_inc_dec(operand_expr, kind, op_span)
|
||||
}
|
||||
|
||||
fn recover_from_inc_dec(
|
||||
&mut self,
|
||||
base: P<Expr>,
|
||||
|
|
|
@ -282,6 +282,18 @@ impl<'a> Parser<'a> {
|
|||
continue;
|
||||
}
|
||||
|
||||
if self.prev_token == token::BinOp(token::Minus)
|
||||
&& self.token == token::BinOp(token::Minus)
|
||||
&& self.prev_token.span.between(self.token.span).is_empty()
|
||||
&& !self.look_ahead(1, |tok| tok.can_begin_expr())
|
||||
{
|
||||
let op_span = self.prev_token.span.to(self.token.span);
|
||||
// Eat the second `-`
|
||||
self.bump();
|
||||
lhs = self.recover_from_postfix_decrement(lhs, op_span, starts_stmt)?;
|
||||
continue;
|
||||
}
|
||||
|
||||
let op = op.node;
|
||||
// Special cases:
|
||||
if op == AssocOp::As {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue