about summary refs log tree commit diff
diff options
context:
space:
mode:
authorDavid Tolnay <dtolnay@gmail.com>2024-05-12 13:39:43 -0700
committerDavid Tolnay <dtolnay@gmail.com>2024-05-12 13:42:37 -0700
commit94cc82c088b9301dc4dcf84ce127a64bbd77dddf (patch)
tree1078496076e4fce603edc376fb6f0c5f1d7adfc7
parent68854b798ebda70014985d26722e7f6820254658 (diff)
downloadrust-94cc82c088b9301dc4dcf84ce127a64bbd77dddf.tar.gz
rust-94cc82c088b9301dc4dcf84ce127a64bbd77dddf.zip
Pretty-print let-else with added parenthesization when needed
-rw-r--r--compiler/rustc_ast_pretty/src/pprust/state.rs6
-rw-r--r--tests/ui/unpretty/let-else.stdout2
2 files changed, 6 insertions, 2 deletions
diff --git a/compiler/rustc_ast_pretty/src/pprust/state.rs b/compiler/rustc_ast_pretty/src/pprust/state.rs
index 2c176828c84..b7bdb2e14a6 100644
--- a/compiler/rustc_ast_pretty/src/pprust/state.rs
+++ b/compiler/rustc_ast_pretty/src/pprust/state.rs
@@ -1238,7 +1238,11 @@ impl<'a> State<'a> {
                 if let Some((init, els)) = loc.kind.init_else_opt() {
                     self.nbsp();
                     self.word_space("=");
-                    self.print_expr(init, FixupContext::default());
+                    self.print_expr_cond_paren(
+                        init,
+                        els.is_some() && classify::expr_trailing_brace(init).is_some(),
+                        FixupContext::default(),
+                    );
                     if let Some(els) = els {
                         self.cbox(INDENT_UNIT);
                         self.ibox(INDENT_UNIT);
diff --git a/tests/ui/unpretty/let-else.stdout b/tests/ui/unpretty/let-else.stdout
index 5f6972cd429..4bc4d9e085f 100644
--- a/tests/ui/unpretty/let-else.stdout
+++ b/tests/ui/unpretty/let-else.stdout
@@ -11,5 +11,5 @@ macro_rules! expr { ($e:expr) => { $e }; }
 
 fn main() {
     let _ = 1 + 1 else { return; };
-    let _ = loop {} else { return; };
+    let _ = (loop {}) else { return; };
 }