Update rewrite_trait_ref to return Option<String>
This commit is contained in:
parent
e94fcfcd39
commit
62e9473d07
1 changed files with 36 additions and 38 deletions
74
src/items.rs
74
src/items.rs
|
@ -676,25 +676,26 @@ fn format_impl_ref_and_type(context: &RewriteContext,
|
||||||
};
|
};
|
||||||
|
|
||||||
if let Some(ref trait_ref) = *trait_ref {
|
if let Some(ref trait_ref) = *trait_ref {
|
||||||
let success = format_trait_ref_then_update_result(context,
|
let result_len = result.len();
|
||||||
&trait_ref,
|
if let Some(trait_ref_str) =
|
||||||
offset,
|
rewrite_trait_ref(context,
|
||||||
&generics_str,
|
&trait_ref,
|
||||||
true,
|
offset,
|
||||||
polarity_str,
|
&generics_str,
|
||||||
&mut result);
|
true,
|
||||||
if !success {
|
polarity_str,
|
||||||
|
result_len) {
|
||||||
|
result.push_str(&trait_ref_str);
|
||||||
|
} else {
|
||||||
let generics_str =
|
let generics_str =
|
||||||
try_opt!(rewrite_generics_inner(context, generics, shape, 0, mk_sp(lo, hi)));
|
try_opt!(rewrite_generics_inner(context, generics, shape, 0, mk_sp(lo, hi)));
|
||||||
if !format_trait_ref_then_update_result(context,
|
result.push_str(&try_opt!(rewrite_trait_ref(context,
|
||||||
&trait_ref,
|
&trait_ref,
|
||||||
offset,
|
offset,
|
||||||
&generics_str,
|
&generics_str,
|
||||||
false,
|
false,
|
||||||
polarity_str,
|
polarity_str,
|
||||||
&mut result) {
|
result_len)));
|
||||||
return None;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
result.push_str(&generics_str);
|
result.push_str(&generics_str);
|
||||||
|
@ -752,43 +753,40 @@ fn format_impl_ref_and_type(context: &RewriteContext,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Returns false if failed to update result: then, try using multiline.
|
fn rewrite_trait_ref(context: &RewriteContext,
|
||||||
fn format_trait_ref_then_update_result(context: &RewriteContext,
|
trait_ref: &ast::TraitRef,
|
||||||
trait_ref: &ast::TraitRef,
|
offset: Indent,
|
||||||
offset: Indent,
|
generics_str: &str,
|
||||||
generics_str: &str,
|
retry: bool,
|
||||||
retry: bool,
|
polarity_str: &str,
|
||||||
polarity_str: &str,
|
result_len: usize)
|
||||||
result: &mut String)
|
-> Option<String> {
|
||||||
-> bool {
|
|
||||||
// 1 = space between generics and trait_ref
|
// 1 = space between generics and trait_ref
|
||||||
let used_space = 1 + polarity_str.len() +
|
let used_space = 1 + polarity_str.len() +
|
||||||
if generics_str.contains('\n') {
|
if generics_str.contains('\n') {
|
||||||
last_line_width(&generics_str)
|
last_line_width(&generics_str)
|
||||||
} else {
|
} else {
|
||||||
result.len() + generics_str.len()
|
result_len + generics_str.len()
|
||||||
};
|
};
|
||||||
let shape = Shape::indented(offset + used_space, context.config);
|
let shape = Shape::indented(offset + used_space, context.config);
|
||||||
if let Some(trait_ref_str) = trait_ref.rewrite(context, shape) {
|
if let Some(trait_ref_str) = trait_ref.rewrite(context, shape) {
|
||||||
if !(retry && trait_ref_str.contains('\n')) {
|
if !(retry && trait_ref_str.contains('\n')) {
|
||||||
result.push_str(&format!("{} {}{}", generics_str, polarity_str, &trait_ref_str));
|
return Some(format!("{} {}{}", generics_str, polarity_str, &trait_ref_str));
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// We could not make enough space for trait_ref, so put it on new line.
|
// We could not make enough space for trait_ref, so put it on new line.
|
||||||
if !retry {
|
if !retry {
|
||||||
let offset = offset.block_indent(context.config);
|
let offset = offset.block_indent(context.config);
|
||||||
let shape = Shape::indented(offset, context.config);
|
let shape = Shape::indented(offset, context.config);
|
||||||
if let Some(trait_ref_str) = trait_ref.rewrite(context, shape) {
|
let trait_ref_str = try_opt!(trait_ref.rewrite(context, shape));
|
||||||
result.push_str(&format!("{}\n{}{}{}",
|
Some(format!("{}\n{}{}{}",
|
||||||
generics_str,
|
generics_str,
|
||||||
&offset.to_string(context.config),
|
&offset.to_string(context.config),
|
||||||
polarity_str,
|
polarity_str,
|
||||||
&trait_ref_str));
|
&trait_ref_str))
|
||||||
return true;
|
} else {
|
||||||
}
|
None
|
||||||
}
|
}
|
||||||
false
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn format_struct(context: &RewriteContext,
|
pub fn format_struct(context: &RewriteContext,
|
||||||
|
|
Loading…
Reference in a new issue