diff --git a/src/utils.rs b/src/utils.rs index 9c1717e8638..47ce5e7fcbe 100644 --- a/src/utils.rs +++ b/src/utils.rs @@ -343,6 +343,7 @@ macro_rules! skip_out_of_file_lines_range { macro_rules! skip_out_of_file_lines_range_visitor { ($self:ident, $span:expr) => { if out_of_file_lines_range!($self, $span) { + $self.push_rewrite($span, None); return; } } diff --git a/src/visitor.rs b/src/visitor.rs index cc178dc0a86..bc3126615d3 100644 --- a/src/visitor.rs +++ b/src/visitor.rs @@ -661,7 +661,19 @@ impl<'a> FmtVisitor<'a> { }) .count(); let (use_items, rest) = items_left.split_at(use_item_length); - self.format_imports(use_items); + + let at_least_one_in_file_lines = use_items + .iter() + .any(|item| !out_of_file_lines_range!(self, item.span)); + + if at_least_one_in_file_lines { + self.format_imports(use_items); + } else { + for item in use_items { + self.push_rewrite(item.span, None); + } + } + items_left = rest; } else { // `unwrap()` is safe here because we know `items_left` diff --git a/tests/source/file-lines-item.rs b/tests/source/file-lines-item.rs index 41043d873ac..0ed4b93df5f 100644 --- a/tests/source/file-lines-item.rs +++ b/tests/source/file-lines-item.rs @@ -1,6 +1,8 @@ -// rustfmt-file_lines: [{"file":"tests/source/file-lines-item.rs","range":[5,7]}] +// rustfmt-file_lines: [{"file":"tests/source/file-lines-item.rs","range":[7,9]}] +// rustfmt-reorder_imports: true use foo::{c, b, a}; +use bar; fn foo() { bar ( ) ; @@ -10,3 +12,11 @@ impl Drop for Context { fn drop(&mut self) { } } + +impl Bar for Baz { + fn foo() { + bar( + baz, // Who knows? + ) + } +} diff --git a/tests/target/file-lines-item.rs b/tests/target/file-lines-item.rs index b5561040ac6..e155e75f34c 100644 --- a/tests/target/file-lines-item.rs +++ b/tests/target/file-lines-item.rs @@ -1,6 +1,8 @@ -// rustfmt-file_lines: [{"file":"tests/source/file-lines-item.rs","range":[5,7]}] +// rustfmt-file_lines: [{"file":"tests/source/file-lines-item.rs","range":[7,9]}] +// rustfmt-reorder_imports: true use foo::{c, b, a}; +use bar; fn foo() { bar(); @@ -10,3 +12,11 @@ impl Drop for Context { fn drop(&mut self) { } } + +impl Bar for Baz { + fn foo() { + bar( + baz, // Who knows? + ) + } +}