Merge pull request #124 from cassiersg/fix-bin-op
Fix bugs in width computation for bin op
This commit is contained in:
commit
54d2620ead
@ -287,13 +287,14 @@ fn rewrite_binary_op(context: &RewriteContext,
|
|||||||
let operator_str = context.codemap.span_to_snippet(op.span).unwrap();
|
let operator_str = context.codemap.span_to_snippet(op.span).unwrap();
|
||||||
|
|
||||||
// 1 = space between lhs expr and operator
|
// 1 = space between lhs expr and operator
|
||||||
let mut result = try_opt!(lhs.rewrite(context, width - 1 - operator_str.len(), offset));
|
let mut result =
|
||||||
|
try_opt!(lhs.rewrite(context, context.config.max_width - offset - 1 - operator_str.len(), offset));
|
||||||
|
|
||||||
result.push(' ');
|
result.push(' ');
|
||||||
result.push_str(&operator_str);
|
result.push_str(&operator_str);
|
||||||
|
|
||||||
let remaining_width = match result.rfind('\n') {
|
let remaining_width = match result.rfind('\n') {
|
||||||
Some(idx) => (context.config.max_width + idx).checked_sub(result.len()).unwrap_or(0),
|
Some(idx) => (offset + width + idx).checked_sub(result.len()).unwrap_or(0),
|
||||||
None => width.checked_sub(result.len()).unwrap_or(0)
|
None => width.checked_sub(result.len()).unwrap_or(0)
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -302,7 +303,9 @@ fn rewrite_binary_op(context: &RewriteContext,
|
|||||||
// operations with high precendence close together.
|
// operations with high precendence close together.
|
||||||
let rhs_result = try_opt!(rhs.rewrite(context, width, offset));
|
let rhs_result = try_opt!(rhs.rewrite(context, width, offset));
|
||||||
|
|
||||||
if rhs_result.len() > remaining_width {
|
// Second condition is needed in case of line break not caused by a
|
||||||
|
// shortage of space, but by end-of-line comments, for example.
|
||||||
|
if rhs_result.len() > remaining_width || rhs_result.contains('\n') {
|
||||||
result.push('\n');
|
result.push('\n');
|
||||||
result.push_str(&make_indent(offset));
|
result.push_str(&make_indent(offset));
|
||||||
} else {
|
} else {
|
||||||
|
@ -10,5 +10,7 @@ fn foo() -> bool {
|
|||||||
|
|
||||||
some_ridiculously_loooooooooooooooooooooong_function(10000 * 30000000000 + 40000 / 1002200000000
|
some_ridiculously_loooooooooooooooooooooong_function(10000 * 30000000000 + 40000 / 1002200000000
|
||||||
- 50000 * sqrt(-1),
|
- 50000 * sqrt(-1),
|
||||||
trivial_value)
|
trivial_value);
|
||||||
|
(((((((((aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa + a +
|
||||||
|
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa + aaaaa)))))))))
|
||||||
}
|
}
|
||||||
|
@ -10,5 +10,8 @@ fn foo() -> bool {
|
|||||||
|
|
||||||
some_ridiculously_loooooooooooooooooooooong_function(10000 * 30000000000 +
|
some_ridiculously_loooooooooooooooooooooong_function(10000 * 30000000000 +
|
||||||
40000 / 1002200000000 - 50000 * sqrt(-1),
|
40000 / 1002200000000 - 50000 * sqrt(-1),
|
||||||
trivial_value)
|
trivial_value);
|
||||||
|
(((((((((aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +
|
||||||
|
a + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +
|
||||||
|
aaaaa)))))))))
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user