Allow comments after where clause
This commit is contained in:
parent
b43958d96e
commit
dab14b4485
3 changed files with 27 additions and 3 deletions
|
@ -500,7 +500,11 @@ impl<'a> FmtVisitor<'a> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn format_impl(context: &RewriteContext, item: &ast::Item, offset: Indent) -> Option<String> {
|
pub fn format_impl(context: &RewriteContext,
|
||||||
|
item: &ast::Item,
|
||||||
|
offset: Indent,
|
||||||
|
where_span_end: Option<BytePos>)
|
||||||
|
-> Option<String> {
|
||||||
if let ast::ItemKind::Impl(_, _, ref generics, ref trait_ref, _, ref items) = item.node {
|
if let ast::ItemKind::Impl(_, _, ref generics, ref trait_ref, _, ref items) = item.node {
|
||||||
let mut result = String::new();
|
let mut result = String::new();
|
||||||
// First try to format the ref and type without a split at the 'for'.
|
// First try to format the ref and type without a split at the 'for'.
|
||||||
|
@ -527,7 +531,7 @@ pub fn format_impl(context: &RewriteContext, item: &ast::Item, offset: Indent) -
|
||||||
"{",
|
"{",
|
||||||
false,
|
false,
|
||||||
last_line_width(&ref_and_type) == 1,
|
last_line_width(&ref_and_type) == 1,
|
||||||
None));
|
where_span_end));
|
||||||
|
|
||||||
if try_opt!(is_impl_single_line(context, &items, &result, &where_clause_str, &item)) {
|
if try_opt!(is_impl_single_line(context, &items, &result, &where_clause_str, &item)) {
|
||||||
result.push_str(&where_clause_str);
|
result.push_str(&where_clause_str);
|
||||||
|
|
|
@ -19,6 +19,7 @@ use strings::string_buffer::StringBuffer;
|
||||||
use {Indent, Shape};
|
use {Indent, Shape};
|
||||||
use utils;
|
use utils;
|
||||||
use codemap::{LineRangeUtils, SpanUtils};
|
use codemap::{LineRangeUtils, SpanUtils};
|
||||||
|
use comment::FindUncommented;
|
||||||
use config::Config;
|
use config::Config;
|
||||||
use rewrite::{Rewrite, RewriteContext};
|
use rewrite::{Rewrite, RewriteContext};
|
||||||
use comment::rewrite_comment;
|
use comment::rewrite_comment;
|
||||||
|
@ -249,7 +250,15 @@ impl<'a> FmtVisitor<'a> {
|
||||||
}
|
}
|
||||||
ast::ItemKind::Impl(..) => {
|
ast::ItemKind::Impl(..) => {
|
||||||
self.format_missing_with_indent(source!(self, item.span).lo);
|
self.format_missing_with_indent(source!(self, item.span).lo);
|
||||||
if let Some(impl_str) = format_impl(&self.get_context(), item, self.block_indent) {
|
let snippet = self.get_context().snippet(item.span);
|
||||||
|
let where_span_end =
|
||||||
|
snippet
|
||||||
|
.find_uncommented("{")
|
||||||
|
.map(|x| (BytePos(x as u32)) + source!(self, item.span).lo);
|
||||||
|
if let Some(impl_str) = format_impl(&self.get_context(),
|
||||||
|
item,
|
||||||
|
self.block_indent,
|
||||||
|
where_span_end) {
|
||||||
self.buffer.push_str(&impl_str);
|
self.buffer.push_str(&impl_str);
|
||||||
self.last_pos = source!(self, item.span).hi;
|
self.last_pos = source!(self, item.span).hi;
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,3 +5,14 @@ impl<T> JSTraceable for SmallVec<[T; 1]> {}
|
||||||
impl<K, V, NodeRef: Deref<Target = Node<K, V>>> Handle<NodeRef, handle::Edge, handle::Internal> {
|
impl<K, V, NodeRef: Deref<Target = Node<K, V>>> Handle<NodeRef, handle::Edge, handle::Internal> {
|
||||||
// Keep this.
|
// Keep this.
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl<V> Test<V>
|
||||||
|
where V: Clone // This comment is NOT removed by formating!
|
||||||
|
{
|
||||||
|
pub fn new(value: V) -> Self {
|
||||||
|
Test {
|
||||||
|
cloned_value: value.clone(),
|
||||||
|
value: value,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue