diff --git a/src/items.rs b/src/items.rs index 01418a08a9a..c7cfc732fc1 100644 --- a/src/items.rs +++ b/src/items.rs @@ -177,7 +177,8 @@ impl<'a> FmtVisitor<'a> { constness: ast::Constness, abi: abi::Abi, vis: ast::Visibility, - span: Span) + span: Span, + block: &ast::Block) -> Option { let mut newline_brace = self.newline_for_brace(&generics.where_clause); @@ -212,7 +213,7 @@ impl<'a> FmtVisitor<'a> { result.push(' '); } - Some(result) + self.single_line_fn(&result, block).or_else(|| Some(result)) } pub fn rewrite_required_fn(&mut self, @@ -447,10 +448,7 @@ impl<'a> FmtVisitor<'a> { Some((result, force_new_line_for_brace)) } - pub fn rewrite_single_line_fn(&self, - fn_str: &str, - block: &ast::Block) - -> Option { + fn single_line_fn(&self, fn_str: &str, block: &ast::Block) -> Option { if fn_str.contains('\n') { return None; diff --git a/src/visitor.rs b/src/visitor.rs index b51274b4d8d..fa51d70a853 100644 --- a/src/visitor.rs +++ b/src/visitor.rs @@ -137,7 +137,8 @@ impl<'a> FmtVisitor<'a> { constness, abi, vis, - codemap::mk_sp(s.lo, b.span.lo)) + codemap::mk_sp(s.lo, b.span.lo), + &b) } visit::FnKind::Method(ident, ref sig, vis) => { self.rewrite_fn(indent, @@ -149,19 +150,20 @@ impl<'a> FmtVisitor<'a> { sig.constness, sig.abi, vis.unwrap_or(ast::Visibility::Inherited), - codemap::mk_sp(s.lo, b.span.lo)) + codemap::mk_sp(s.lo, b.span.lo), + &b) } visit::FnKind::Closure => None, }; if let Some(fn_str) = rewrite { self.format_missing_with_indent(s.lo); - if let Some(ref single_line_fn) = self.rewrite_single_line_fn(&fn_str, &b) { - self.buffer.push_str(single_line_fn); - self.last_pos = b.span.hi; - return; - } else { - self.buffer.push_str(&fn_str); + self.buffer.push_str(&fn_str); + if let Some(c) = fn_str.chars().last() { + if c == '}' { + self.last_pos = b.span.hi; + return; + } } } else { self.format_missing(b.span.lo);