newline_style: NewlineStyle, NewlineStyle::Unix, "Unix or Windows line endings";
fn_brace_style: BraceStyle, BraceStyle::SameLineWhere, "Brace style for functions";
item_brace_style: BraceStyle, BraceStyle::SameLineWhere, "Brace style for structs and enums";
+ control_style: Style, Style::Default, "Indent style for control flow statements";
control_brace_style: ControlBraceStyle, ControlBraceStyle::AlwaysSameLine,
"Brace style for control flow constructs";
impl_empty_single_line: bool, true, "Put empty-body implementations on a single line";
semicolon_for_stmt, trimmed_last_line_width, left_most_sub_expr, stmt_expr,
colon_spaces};
use visitor::FmtVisitor;
-use config::{Config, IndentStyle, MultilineStyle, ControlBraceStyle};
+use config::{Config, IndentStyle, MultilineStyle, ControlBraceStyle, Style};
use comment::{FindUncommented, rewrite_comment, contains_comment, recover_comment_removed};
use types::{rewrite_path, PathContext};
use items::{span_lo_for_arg, span_hi_for_arg};
.max_width
.checked_sub(shape.used_width() + prefix.len() +
infix.len()));
- let rhs_shape = try_opt!(shape.sub_width(suffix.len() + prefix.len()))
- .visual_indent(prefix.len());
+ let rhs_shape = match context.config.control_style {
+ Style::Default => {
+ try_opt!(shape.sub_width(suffix.len() + prefix.len())).visual_indent(prefix.len())
+ }
+ Style::Rfc => try_opt!(shape.block_left(context.config.tab_spaces)),
+ };
let rhs_result = try_opt!(rhs.rewrite(context, rhs_shape));
let lhs_result = try_opt!(lhs.rewrite(context,
let pat_expr_string = match self.cond {
Some(cond) => {
- let mut cond_shape = try_opt!(constr_shape.shrink_left(add_offset));
+ let mut cond_shape = match context.config.control_style {
+ Style::Default => try_opt!(constr_shape.shrink_left(add_offset)),
+ Style::Rfc => constr_shape,
+ };
if context.config.control_brace_style != ControlBraceStyle::AlwaysNextLine {
// 2 = " {".len()
cond_shape = try_opt!(cond_shape.sub_width(2));
None => String::new(),
};
+ let force_newline_brace = context.config.control_style == Style::Rfc &&
+ pat_expr_string.contains('\n');
+
// Try to format if-else on single line.
if self.allow_single_line && context.config.single_line_if_else_max_width > 0 {
let trial = self.rewrite_single_line(&pat_expr_string, context, shape.width);
&shape.indent.block_only().to_string(context.config);
let block_sep = if self.cond.is_none() && between_kwd_cond_comment.is_some() {
""
- } else if context.config.control_brace_style ==
- ControlBraceStyle::AlwaysNextLine {
+ } else if context.config.control_brace_style == ControlBraceStyle::AlwaysNextLine ||
+ force_newline_brace {
alt_block_sep.as_str()
} else {
" "
connector: &str,
shape: Shape)
-> Option<String> {
- debug!("rewrite_pat_expr {:?} {:?}", shape, pat);
+ debug!("rewrite_pat_expr {:?} {:?} {:?}", shape, pat, expr);
let mut result = match pat {
Some(pat) => {
let matcher = if matcher.is_empty() {
// rustfmt-array_layout: Block
// rustfmt-fn_call_style: Block
+// rustfmt-control_style: Rfc
// Test expressions with block formatting.
fn arrays() {
Some(p) => baz!(one_item_macro_as_expression_which_is_also_loooooooooooooooong),
};
}
+
+fn issue_1450() {
+ if selfstate
+ .compare_exchandsfasdsdfgsdgsdfgsdfgsdfgsdfgsdfgfsfdsage_weak(
+ STATE_PARKED,
+ STATE_UNPARKED,
+ Release,
+ Relaxed,
+ Release,
+ Relaxed,
+ )
+ .is_ok() {
+ return;
+ }
+}
+
+fn foo() {
+ if real_total <= limit && !pre_line_comments &&
+ !items.into_iter().any(|item| item.as_ref().is_multiline()) {
+ DefinitiveListTactic::Horizontal
+ }
+}
// rustfmt-array_layout: Block
// rustfmt-fn_call_style: Block
+// rustfmt-control_style: Rfc
// Test expressions with block formatting.
fn arrays() {
Some(p) => baz!(one_item_macro_as_expression_which_is_also_loooooooooooooooong),
};
}
+
+fn issue_1450() {
+ if selfstate
+ .compare_exchandsfasdsdfgsdgsdfgsdfgsdfgsdfgsdfgfsfdsage_weak(
+ STATE_PARKED,
+ STATE_UNPARKED,
+ Release,
+ Relaxed,
+ Release,
+ Relaxed,
+ )
+ .is_ok()
+ {
+ return;
+ }
+}
+
+fn foo() {
+ if real_total <= limit && !pre_line_comments &&
+ !items.into_iter().any(|item| item.as_ref().is_multiline())
+ {
+ DefinitiveListTactic::Horizontal
+ }
+}