From 490d479eec4a5f068b63304db4435a3b2f395f13 Mon Sep 17 00:00:00 2001 From: David Tolnay Date: Sat, 11 Jan 2025 20:16:21 -0800 Subject: [PATCH] Disregard bailouts inside of closure bodies --- src/fixup.rs | 21 +-------------------- tests/test_precedence.rs | 4 ++++ 2 files changed, 5 insertions(+), 20 deletions(-) diff --git a/src/fixup.rs b/src/fixup.rs index 7e3f95d..55d3623 100644 --- a/src/fixup.rs +++ b/src/fixup.rs @@ -2,7 +2,6 @@ use crate::classify; use crate::precedence::Precedence; use syn::{ Expr, ExprBreak, ExprRange, ExprRawAddr, ExprReference, ExprReturn, ExprUnary, ExprYield, - ReturnType, }; #[derive(Copy, Clone)] @@ -595,25 +594,7 @@ fn scan_right( _ => Scan::Consume, }, }, - // false positive: https://github.com/rust-lang/rust/issues/117304 - #[cfg_attr(all(test, exhaustive), allow(non_exhaustive_omitted_patterns))] - Expr::Closure(e) => { - if matches!(e.output, ReturnType::Default) - || matches!(&*e.body, Expr::Block(body) if body.attrs.is_empty() && body.label.is_none()) - { - if bailout_offset >= 1 { - return Scan::Consume; - } - let right_fixup = - fixup.rightmost_subexpression_fixup(false, false, Precedence::Jump); - match scan_right(&e.body, right_fixup, Precedence::Jump, 1, 1) { - Scan::Fail => Scan::Bailout, - Scan::Bailout | Scan::Consume => Scan::Consume, - } - } else { - Scan::Consume - } - } + Expr::Closure(_) => Scan::Consume, Expr::Let(e) => { if bailout_offset >= 1 { return Scan::Consume; diff --git a/tests/test_precedence.rs b/tests/test_precedence.rs index 0696e02..f1eec23 100644 --- a/tests/test_precedence.rs +++ b/tests/test_precedence.rs @@ -872,6 +872,10 @@ fn test_permutations() -> ExitCode { parsed, ); } + if pretty.contains("(||") { + // https://github.com/dtolnay/prettyplease/issues/99 + return; + } let no_paren = pretty.replace(['(', ')'], ""); if pretty != no_paren { if let Ok(mut parsed2) = syn::parse_file(&no_paren) {