1
Fork 0

Eliminate PREC_FORCE_PAREN

This commit is contained in:
David Tolnay 2024-11-28 13:52:28 -08:00
parent 34a65f203f
commit ca8f47439e
No known key found for this signature in database
GPG key ID: F9BA143B95FF6D82
3 changed files with 8 additions and 9 deletions

View file

@ -235,7 +235,6 @@ pub const PREC_RANGE: i8 = -10;
// The range 2..=14 is reserved for AssocOp binary operator precedences. // The range 2..=14 is reserved for AssocOp binary operator precedences.
pub const PREC_PREFIX: i8 = 50; pub const PREC_PREFIX: i8 = 50;
pub const PREC_UNAMBIGUOUS: i8 = 60; pub const PREC_UNAMBIGUOUS: i8 = 60;
pub const PREC_FORCE_PAREN: i8 = 100;
/// In `let p = e`, operators with precedence `<=` this one requires parentheses in `e`. /// In `let p = e`, operators with precedence `<=` this one requires parentheses in `e`.
pub fn prec_let_scrutinee_needs_par() -> usize { pub fn prec_let_scrutinee_needs_par() -> usize {

View file

@ -212,9 +212,9 @@ impl<'a> State<'a> {
} }
fn print_expr_call(&mut self, func: &ast::Expr, args: &[P<ast::Expr>], fixup: FixupContext) { fn print_expr_call(&mut self, func: &ast::Expr, args: &[P<ast::Expr>], fixup: FixupContext) {
let prec = match func.kind { let needs_paren = match func.kind {
ast::ExprKind::Field(..) => parser::PREC_FORCE_PAREN, ast::ExprKind::Field(..) => true,
_ => parser::PREC_UNAMBIGUOUS, _ => func.precedence() < parser::PREC_UNAMBIGUOUS,
}; };
// Independent of parenthesization related to precedence, we must // Independent of parenthesization related to precedence, we must
@ -233,7 +233,7 @@ impl<'a> State<'a> {
// because the latter is valid syntax but with the incorrect meaning. // because the latter is valid syntax but with the incorrect meaning.
// It's a match-expression followed by tuple-expression, not a function // It's a match-expression followed by tuple-expression, not a function
// call. // call.
self.print_expr_cond_paren(func, func.precedence() < prec, fixup.leftmost_subexpression()); self.print_expr_cond_paren(func, needs_paren, fixup.leftmost_subexpression());
self.print_call_post(args) self.print_call_post(args)
} }

View file

@ -1132,12 +1132,12 @@ impl<'a> State<'a> {
} }
fn print_expr_call(&mut self, func: &hir::Expr<'_>, args: &[hir::Expr<'_>]) { fn print_expr_call(&mut self, func: &hir::Expr<'_>, args: &[hir::Expr<'_>]) {
let prec = match func.kind { let needs_paren = match func.kind {
hir::ExprKind::Field(..) => parser::PREC_FORCE_PAREN, hir::ExprKind::Field(..) => true,
_ => parser::PREC_UNAMBIGUOUS, _ => func.precedence() < parser::PREC_UNAMBIGUOUS,
}; };
self.print_expr_cond_paren(func, func.precedence() < prec); self.print_expr_cond_paren(func, needs_paren);
self.print_call_post(args) self.print_call_post(args)
} }