Add rewrite for ExprParen
This commit is contained in:
parent
6a5ef17eb1
commit
0baeca5829
1 changed files with 20 additions and 0 deletions
20
src/expr.rs
20
src/expr.rs
|
@ -125,6 +125,23 @@ impl<'a> FmtVisitor<'a> {
|
||||||
format!("{}({})", callee_str, args_str)
|
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 {
|
pub fn rewrite_expr(&mut self, expr: &ast::Expr, width: usize, offset: usize) -> String {
|
||||||
match expr.node {
|
match expr.node {
|
||||||
ast::Expr_::ExprLit(ref l) => {
|
ast::Expr_::ExprLit(ref l) => {
|
||||||
|
@ -140,6 +157,9 @@ impl<'a> FmtVisitor<'a> {
|
||||||
ast::Expr_::ExprCall(ref callee, ref args) => {
|
ast::Expr_::ExprCall(ref callee, ref args) => {
|
||||||
return self.rewrite_call(callee, args, width, offset);
|
return self.rewrite_call(callee, args, width, offset);
|
||||||
}
|
}
|
||||||
|
ast::Expr_::ExprParen(ref subexpr) => {
|
||||||
|
return self.rewrite_paren(subexpr, width, offset);
|
||||||
|
}
|
||||||
_ => {}
|
_ => {}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue