diff options
| author | Sasha Pourcelot <sasha.pourcelot@protonmail.com> | 2024-04-22 18:48:41 +0200 |
|---|---|---|
| committer | Sasha Pourcelot <sasha.pourcelot@protonmail.com> | 2024-04-29 11:34:22 +0200 |
| commit | c8ff8a4dc7c9867c54df8f6d31120f4cd3923508 (patch) | |
| tree | 263de82e79823d8ea5d9b780e595031a616686c1 | |
| parent | 7f2fc33da6633f5a764ddc263c769b6b2873d167 (diff) | |
| download | rust-c8ff8a4dc7c9867c54df8f6d31120f4cd3923508.tar.gz rust-c8ff8a4dc7c9867c54df8f6d31120f4cd3923508.zip | |
Pretty-print parenthesis around binary in postfix match
Signed-off-by: Sasha Pourcelot <sasha.pourcelot@protonmail.com>
| -rw-r--r-- | compiler/rustc_ast_pretty/src/pprust/state/expr.rs | 2 | ||||
| -rw-r--r-- | tests/pretty/postfix-match/precedence.pp | 34 | ||||
| -rw-r--r-- | tests/pretty/postfix-match/precedence.rs | 34 | ||||
| -rw-r--r-- | tests/pretty/postfix-match/simple-matches.rs (renamed from tests/pretty/postfix-match.rs) | 0 |
4 files changed, 69 insertions, 1 deletions
diff --git a/compiler/rustc_ast_pretty/src/pprust/state/expr.rs b/compiler/rustc_ast_pretty/src/pprust/state/expr.rs index 4cbdc9f256d..b5bb781acdf 100644 --- a/compiler/rustc_ast_pretty/src/pprust/state/expr.rs +++ b/compiler/rustc_ast_pretty/src/pprust/state/expr.rs @@ -488,7 +488,7 @@ impl<'a> State<'a> { self.space(); } MatchKind::Postfix => { - self.print_expr_as_cond(expr); + self.print_expr_maybe_paren(expr, parser::PREC_POSTFIX, fixup); self.word_nbsp(".match"); } } diff --git a/tests/pretty/postfix-match/precedence.pp b/tests/pretty/postfix-match/precedence.pp new file mode 100644 index 00000000000..967aa7bc39e --- /dev/null +++ b/tests/pretty/postfix-match/precedence.pp @@ -0,0 +1,34 @@ +#![feature(prelude_import)] +#![no_std] +#![feature(postfix_match)] +#[prelude_import] +use ::std::prelude::rust_2015::*; +#[macro_use] +extern crate std; + +use std::ops::Add; + +//@ pretty-mode:expanded +//@ pp-exact:precedence.pp + +macro_rules! repro { ($e:expr) => { $e.match { _ => {} } }; } + +struct Struct {} + +impl Add<Struct> for usize { + type Output = (); + fn add(self, _: Struct) -> () { () } +} +pub fn main() { + let a; + ( + { 1 } + 1).match { + _ => {} + }; + (4 as usize).match { _ => {} }; + (return).match { _ => {} }; + (a = 42).match { _ => {} }; + (|| {}).match { _ => {} }; + (42..101).match { _ => {} }; + (1 + Struct {}).match { _ => {} }; +} diff --git a/tests/pretty/postfix-match/precedence.rs b/tests/pretty/postfix-match/precedence.rs new file mode 100644 index 00000000000..ee947e161dd --- /dev/null +++ b/tests/pretty/postfix-match/precedence.rs @@ -0,0 +1,34 @@ +#![feature(postfix_match)] + +use std::ops::Add; + +//@ pretty-mode:expanded +//@ pp-exact:precedence.pp + +macro_rules! repro { + ($e:expr) => { + $e.match { + _ => {} + } + }; +} + +struct Struct {} + +impl Add<Struct> for usize { + type Output = (); + fn add(self, _: Struct) -> () { + () + } +} +pub fn main() { + let a; + + repro!({ 1 } + 1); + repro!(4 as usize); + repro!(return); + repro!(a = 42); + repro!(|| {}); + repro!(42..101); + repro!(1 + Struct {}); +} diff --git a/tests/pretty/postfix-match.rs b/tests/pretty/postfix-match/simple-matches.rs index 5bb54e15275..5bb54e15275 100644 --- a/tests/pretty/postfix-match.rs +++ b/tests/pretty/postfix-match/simple-matches.rs |
