// except according to those terms.
use config::lists::*;
-use syntax::source_map::Span;
use syntax::parse::classify;
+use syntax::source_map::Span;
use syntax::{ast, ptr};
-use source_map::SpanUtils;
-use expr::{block_contains_comment, is_simple_block, is_unsafe_block, rewrite_cond, ToExpr};
+use expr::{block_contains_comment, is_simple_block, is_unsafe_block, rewrite_cond};
use items::{span_hi_for_arg, span_lo_for_arg};
use lists::{definitive_tactic, itemize_list, write_list, ListFormatting, Separator};
+use overflow::OverflowableItem;
use rewrite::{Rewrite, RewriteContext};
use shape::Shape;
+use source_map::SpanUtils;
use utils::{last_line_width, left_most_sub_expr, stmt_expr};
// This module is pretty messy because of the rules around closures and blocks:
match expr.node {
ast::ExprKind::Match(..)
| ast::ExprKind::Block(..)
- | ast::ExprKind::Catch(..)
+ | ast::ExprKind::TryBlock(..)
| ast::ExprKind::Loop(..)
| ast::ExprKind::Struct(..) => true,
} else {
Some(rw)
}
- }).map(|rw| format!("{} {}", prefix, rw))
+ })
+ .map(|rw| format!("{} {}", prefix, rw))
}
// Rewrite closure whose body is block.
// When overflowing the closure which consists of a single control flow expression,
// force to use block if its condition uses multi line.
- let is_multi_lined_cond = rewrite_cond(context, body, body_shape)
- .map(|cond| cond.contains('\n') || cond.len() > body_shape.width)
- .unwrap_or(false);
+ let is_multi_lined_cond = rewrite_cond(context, body, body_shape).map_or(false, |cond| {
+ cond.contains('\n') || cond.len() > body_shape.width
+ });
if is_multi_lined_cond {
return rewrite_closure_with_block(body, &prefix, context, body_shape);
}
}
/// Returns true if the given vector of arguments has more than one `ast::ExprKind::Closure`.
-pub fn args_have_many_closure<T>(args: &[&T]) -> bool
-where
- T: ToExpr,
-{
+pub fn args_have_many_closure(args: &[OverflowableItem]) -> bool {
args.iter()
- .filter(|arg| {
- arg.to_expr()
- .map(|e| match e.node {
- ast::ExprKind::Closure(..) => true,
- _ => false,
- }).unwrap_or(false)
- }).count()
+ .filter_map(|arg| arg.to_expr())
+ .filter(|expr| match expr.node {
+ ast::ExprKind::Closure(..) => true,
+ _ => false,
+ })
+ .count()
> 1
}