]> git.lizzy.rs Git - rust.git/commitdiff
visitor: Only reorder imports if at least one of them is in file-lines.
authorEmilio Cobos Álvarez <emilio@crisal.io>
Sat, 29 Jul 2017 15:07:17 +0000 (17:07 +0200)
committerEmilio Cobos Álvarez <emilio@crisal.io>
Mon, 31 Jul 2017 08:14:58 +0000 (09:14 +0100)
src/visitor.rs
tests/source/file-lines-item.rs
tests/target/file-lines-item.rs

index cc178dc0a86036b2ec49d3ef33911829384172a3..bc3126615d39b595c155e3aed2058197e0b2137f 100644 (file)
@@ -661,7 +661,19 @@ fn walk_mod_items(&mut self, m: &ast::Mod) {
                     })
                     .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`
index 2f856c004e848fb2c20893beec58f9dfe871d328..0ed4b93df5f0be940fae9f83175c275f2201848c 100644 (file)
@@ -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 ( ) ;
index f0908cba56a93894b1a764e50879eb54c86e247c..e155e75f34c27447944f4d7ad4909d2a6ee37931 100644 (file)
@@ -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();