Skip to content

Commit

Permalink
Use correct heuristic for match block flattening
Browse files Browse the repository at this point in the history
  • Loading branch information
YaLTeR committed Sep 11, 2018
1 parent f116bae commit 838df8d
Show file tree
Hide file tree
Showing 4 changed files with 22 additions and 20 deletions.
4 changes: 2 additions & 2 deletions Configurations.md
Expand Up @@ -1303,7 +1303,7 @@ fn main() {
});

match lorem {
None => if ipsum {
None => |ipsum| {
println!("Hello World");
},
Some(dolor) => foo(),
Expand All @@ -1324,7 +1324,7 @@ fn main() {

match lorem {
None => {
if ipsum {
|ipsum| {
println!("Hello World");
}
}
Expand Down
12 changes: 7 additions & 5 deletions src/config/lists.rs
Expand Up @@ -95,11 +95,13 @@ impl SeparatorPlace {
) -> SeparatorPlace {
match tactic {
DefinitiveListTactic::Vertical => default,
_ => if sep == "," {
SeparatorPlace::Back
} else {
default
},
_ => {
if sep == "," {
SeparatorPlace::Back
} else {
default
}
}
}
}
}
12 changes: 7 additions & 5 deletions src/expr.rs
Expand Up @@ -179,11 +179,13 @@ pub fn format_expr(
Some(format!("break{}", id_str))
}
}
ast::ExprKind::Yield(ref opt_expr) => if let Some(ref expr) = *opt_expr {
rewrite_unary_prefix(context, "yield ", &**expr, shape)
} else {
Some("yield".to_string())
},
ast::ExprKind::Yield(ref opt_expr) => {
if let Some(ref expr) = *opt_expr {
rewrite_unary_prefix(context, "yield ", &**expr, shape)
} else {
Some("yield".to_string())
}
}
ast::ExprKind::Closure(capture, asyncness, movability, ref fn_decl, ref body, _) => {
closures::rewrite_closure(
capture, asyncness, movability, fn_decl, body, expr.span, context, shape,
Expand Down
14 changes: 6 additions & 8 deletions src/matches.rs
Expand Up @@ -20,7 +20,7 @@ use comment::{combine_strs_with_missing_comments, rewrite_comment};
use config::{Config, ControlBraceStyle, IndentStyle};
use expr::{
format_expr, is_empty_block, is_simple_block, is_unsafe_block, prefer_next_line,
rewrite_multiple_patterns, ExprType, RhsTactics, ToExpr,
rewrite_multiple_patterns, ExprType, RhsTactics,
};
use lists::{itemize_list, write_list, ListFormatting};
use rewrite::{Rewrite, RewriteContext};
Expand Down Expand Up @@ -314,23 +314,21 @@ fn block_can_be_flattened<'a>(
// @extend: true if the arm body can be put next to `=>`
// @body: flattened body, if the body is block with a single expression
fn flatten_arm_body<'a>(context: &'a RewriteContext, body: &'a ast::Expr) -> (bool, &'a ast::Expr) {
let can_extend =
|expr| !context.config.force_multiline_blocks() && can_flatten_block_around_this(expr);

if let Some(ref block) = block_can_be_flattened(context, body) {
if let ast::StmtKind::Expr(ref expr) = block.stmts[0].node {
if let ast::ExprKind::Block(..) = expr.node {
flatten_arm_body(context, expr)
} else {
let can_extend_expr =
!context.config.force_multiline_blocks() && can_flatten_block_around_this(expr);
(can_extend_expr, &*expr)
(can_extend(expr), &*expr)
}
} else {
(false, &*body)
}
} else {
(
!context.config.force_multiline_blocks() && body.can_be_overflowed(context, 1),
&*body,
)
(can_extend(body), &*body)
}
}

Expand Down

0 comments on commit 838df8d

Please sign in to comment.