Add rewrite for ExprParen
This commit is contained in:
parent
6a5ef17eb1
commit
0baeca5829
20
src/expr.rs
20
src/expr.rs
@ -125,6 +125,23 @@ impl<'a> FmtVisitor<'a> {
|
||||
format!("{}({})", callee_str, args_str)
|
||||
}
|
||||
|
||||
fn rewrite_paren(&mut self, subexpr: &ast::Expr, width: usize, offset: usize) -> String {
|
||||
debug!("rewrite_paren, width: {}, offset: {}", width, offset);
|
||||
// 1 is for opening paren
|
||||
let subexpr_str = self.rewrite_expr(subexpr, width-1, offset+1);
|
||||
debug!("rewrite_paren, subexpr_str: `{}`", subexpr_str);
|
||||
let mut lines = subexpr_str.rsplit('\n');
|
||||
let last_line_len = lines.next().unwrap().len();
|
||||
let last_line_offset = if lines.next().is_none() {offset+1} else {0};
|
||||
if width + offset - last_line_offset - last_line_len > 0 {
|
||||
format!("({})", subexpr_str)
|
||||
} else {
|
||||
// FIXME That's correct unless we have width < 2. Return an Optrion for such cases ?
|
||||
format!("({}\n{} )", subexpr_str, make_indent(offset))
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
pub fn rewrite_expr(&mut self, expr: &ast::Expr, width: usize, offset: usize) -> String {
|
||||
match expr.node {
|
||||
ast::Expr_::ExprLit(ref l) => {
|
||||
@ -140,6 +157,9 @@ impl<'a> FmtVisitor<'a> {
|
||||
ast::Expr_::ExprCall(ref callee, ref args) => {
|
||||
return self.rewrite_call(callee, args, width, offset);
|
||||
}
|
||||
ast::Expr_::ExprParen(ref subexpr) => {
|
||||
return self.rewrite_paren(subexpr, width, offset);
|
||||
}
|
||||
_ => {}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user