From c29fb6a3b7585ef3c8204959603eaae855b7925a Mon Sep 17 00:00:00 2001 From: David Tolnay Date: Mon, 24 Jun 2024 19:47:05 -0700 Subject: [PATCH] Eliminate Postfix precedence level --- src/expr.rs | 12 ++++++------ src/precedence.rs | 18 +++++++----------- 2 files changed, 13 insertions(+), 17 deletions(-) diff --git a/src/expr.rs b/src/expr.rs index c60bcf4771..30bf9c76c6 100644 --- a/src/expr.rs +++ b/src/expr.rs @@ -3180,7 +3180,7 @@ pub(crate) mod printing { outer_attrs_to_tokens(&e.attrs, tokens); print_subexpression( &e.base, - Precedence::of(&e.base) < Precedence::Postfix, + Precedence::of(&e.base) < Precedence::Unambiguous, tokens, fixup.leftmost_subexpression_with_dot(), ); @@ -3313,7 +3313,7 @@ pub(crate) mod printing { let precedence = if let Expr::Field(_) = &*e.func { Precedence::Any } else { - Precedence::Postfix + Precedence::Unambiguous }; print_subexpression( &e.func, @@ -3424,7 +3424,7 @@ pub(crate) mod printing { outer_attrs_to_tokens(&e.attrs, tokens); print_subexpression( &e.base, - Precedence::of(&e.base) < Precedence::Postfix, + Precedence::of(&e.base) < Precedence::Unambiguous, tokens, #[cfg(feature = "full")] fixup.leftmost_subexpression_with_dot(), @@ -3519,7 +3519,7 @@ pub(crate) mod printing { outer_attrs_to_tokens(&e.attrs, tokens); print_subexpression( &e.expr, - Precedence::of(&e.expr) < Precedence::Postfix, + Precedence::of(&e.expr) < Precedence::Unambiguous, tokens, #[cfg(feature = "full")] fixup.leftmost_subexpression(), @@ -3635,7 +3635,7 @@ pub(crate) mod printing { outer_attrs_to_tokens(&e.attrs, tokens); print_subexpression( &e.receiver, - Precedence::of(&e.receiver) < Precedence::Postfix, + Precedence::of(&e.receiver) < Precedence::Unambiguous, tokens, #[cfg(feature = "full")] fixup.leftmost_subexpression_with_dot(), @@ -3785,7 +3785,7 @@ pub(crate) mod printing { outer_attrs_to_tokens(&e.attrs, tokens); print_subexpression( &e.expr, - Precedence::of(&e.expr) < Precedence::Postfix, + Precedence::of(&e.expr) < Precedence::Unambiguous, tokens, fixup.leftmost_subexpression_with_dot(), ); diff --git a/src/precedence.rs b/src/precedence.rs index 450958ad34..28202a5483 100644 --- a/src/precedence.rs +++ b/src/precedence.rs @@ -36,10 +36,7 @@ pub(crate) enum Precedence { // unary - * ! & &mut #[cfg(feature = "printing")] Prefix, - // function calls, array indexing, field expressions, method calls, ? - #[cfg(feature = "printing")] - Postfix, - // paths, loops + // paths, loops, function calls, array indexing, field expressions, method calls #[cfg(feature = "printing")] Unambiguous, } @@ -92,30 +89,29 @@ impl Precedence { Expr::Cast(_) => Precedence::Cast, Expr::Let(_) | Expr::Reference(_) | Expr::Unary(_) => Precedence::Prefix, - Expr::Await(_) - | Expr::Call(_) - | Expr::MethodCall(_) - | Expr::Field(_) - | Expr::Index(_) - | Expr::Try(_) => Precedence::Postfix, - Expr::Array(_) | Expr::Async(_) + | Expr::Await(_) | Expr::Block(_) + | Expr::Call(_) | Expr::Const(_) | Expr::Continue(_) + | Expr::Field(_) | Expr::ForLoop(_) | Expr::Group(_) | Expr::If(_) + | Expr::Index(_) | Expr::Infer(_) | Expr::Lit(_) | Expr::Loop(_) | Expr::Macro(_) | Expr::Match(_) + | Expr::MethodCall(_) | Expr::Paren(_) | Expr::Path(_) | Expr::Repeat(_) | Expr::Struct(_) + | Expr::Try(_) | Expr::TryBlock(_) | Expr::Tuple(_) | Expr::Unsafe(_)