Mark expr_requires_semi_to_be_stmt call sites
For each of these, we need to decide whether they need to be using `expr_requires_semi_to_be_stmt`, or `expr_requires_comma_to_be_match_arm`, which are supposed to be 2 different behaviors. Previously they were conflated into one, causing either too much or too little parenthesization.
This commit is contained in:
parent
b431eec6f2
commit
cbb8714a3f
6 changed files with 11 additions and 9 deletions
|
@ -498,7 +498,7 @@ impl<'a> Parser<'a> {
|
|||
/// Checks if this expression is a successfully parsed statement.
|
||||
fn expr_is_complete(&self, e: &Expr) -> bool {
|
||||
self.restrictions.contains(Restrictions::STMT_EXPR)
|
||||
&& !classify::expr_requires_semi_to_be_stmt(e)
|
||||
&& !classify::expr_requires_semi_to_be_stmt_FIXME(e)
|
||||
}
|
||||
|
||||
/// Parses `x..y`, `x..=y`, and `x..`/`x..=`.
|
||||
|
@ -2694,7 +2694,7 @@ impl<'a> Parser<'a> {
|
|||
// If it's not a free-standing expression, and is followed by a block,
|
||||
// then it's very likely the condition to an `else if`.
|
||||
if self.check(&TokenKind::OpenDelim(Delimiter::Brace))
|
||||
&& classify::expr_requires_semi_to_be_stmt(&cond) =>
|
||||
&& classify::expr_requires_semi_to_be_stmt_FIXME(&cond) =>
|
||||
{
|
||||
self.dcx().emit_err(errors::ExpectedElseBlock {
|
||||
first_tok_span,
|
||||
|
@ -3136,7 +3136,7 @@ impl<'a> Parser<'a> {
|
|||
err
|
||||
})?;
|
||||
|
||||
let require_comma = classify::expr_requires_semi_to_be_stmt(&expr)
|
||||
let require_comma = classify::expr_requires_semi_to_be_stmt_FIXME(&expr)
|
||||
&& this.token != token::CloseDelim(Delimiter::Brace);
|
||||
|
||||
if !require_comma {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue