diff --git a/src/items.rs b/src/items.rs index 18b58e57fe1..085b9eed812 100644 --- a/src/items.rs +++ b/src/items.rs @@ -2306,7 +2306,7 @@ fn rewrite_where_clause_rfc_style(context: &RewriteContext, terminator, |pred| span_for_where_pred(pred).lo, |pred| span_for_where_pred(pred).hi, - |pred| pred.rewrite(context, clause_shape), + |pred| pred.rewrite(context, shape), span_start, span_end); let comma_tactic = if suppress_comma { diff --git a/src/types.rs b/src/types.rs index d2405f390f1..7e5daa12f81 100644 --- a/src/types.rs +++ b/src/types.rs @@ -24,7 +24,7 @@ use lists::{itemize_list, format_fn_args}; use rewrite::{Rewrite, RewriteContext}; use utils::{extra_offset, format_mutability, colon_spaces, wrap_str, mk_sp, last_line_width}; use expr::{rewrite_unary_prefix, rewrite_pair, rewrite_tuple_type}; -use config::TypeDensity; +use config::{Style, TypeDensity}; #[derive(Copy, Clone, Debug, Eq, PartialEq)] pub enum PathContext { @@ -383,7 +383,10 @@ impl Rewrite for ast::WherePredicate { } } else { let used_width = type_str.len() + colon.len(); - let ty_shape = try_opt!(shape.block_left(used_width)); + let ty_shape = match context.config.where_style() { + Style::Legacy => try_opt!(shape.block_left(used_width)), + Style::Rfc => shape.block_indent(context.config.tab_spaces()), + }; let bounds: Vec<_> = try_opt!(bounds .iter() diff --git a/tests/source/where-clause-rfc.rs b/tests/source/where-clause-rfc.rs index d8a014c4a91..ef822f6bea2 100644 --- a/tests/source/where-clause-rfc.rs +++ b/tests/source/where-clause-rfc.rs @@ -42,3 +42,9 @@ struct Exactly100CharsToSemicolon struct AlwaysOnNextLine where A: LongTrait { x: i32 } + +pub trait SomeTrait + where + T: Something + Sync + Send + Display + Debug + Copy + Hash + Debug + Display + Write + Read + FromStr +{ +} diff --git a/tests/target/where-clause-rfc.rs b/tests/target/where-clause-rfc.rs index 6859690fa15..bdf1f9d2574 100644 --- a/tests/target/where-clause-rfc.rs +++ b/tests/target/where-clause-rfc.rs @@ -96,3 +96,20 @@ where { x: i32, } + +pub trait SomeTrait +where + T: Something + + Sync + + Send + + Display + + Debug + + Copy + + Hash + + Debug + + Display + + Write + + Read + + FromStr +{ +}