Skip to content

Commit

Permalink
rebasing
Browse files Browse the repository at this point in the history
  • Loading branch information
nrc committed Apr 7, 2018
1 parent c0452f2 commit 30402d8
Show file tree
Hide file tree
Showing 6 changed files with 45 additions and 55 deletions.
79 changes: 33 additions & 46 deletions src/imports.rs
Original file line number Diff line number Diff line change
Expand Up @@ -185,7 +185,7 @@ impl UseTree {
} else {
Some(item.attrs.clone())
},
).normalize(context.config.reorder_imported_names()),
).normalize(),
),
_ => None,
}
Expand Down Expand Up @@ -271,7 +271,7 @@ impl UseTree {
}

// Do the adjustments that rustfmt does elsewhere to use paths.
pub fn normalize(mut self, do_sort: bool) -> UseTree {
pub fn normalize(mut self) -> UseTree {
let mut last = self.path.pop().expect("Empty use tree?");
// Hack around borrow checker.
let mut normalize_sole_list = false;
Expand Down Expand Up @@ -335,7 +335,7 @@ impl UseTree {
for seg in &list[0].path {
self.path.push(seg.clone());
}
return self.normalize(do_sort);
return self.normalize();
}
_ => unreachable!(),
}
Expand All @@ -344,11 +344,9 @@ impl UseTree {
// Recursively normalize elements of a list use (including sorting the list).
if let UseSegment::List(list) = last {
let mut list = list.into_iter()
.map(|ut| ut.normalize(do_sort))
.map(|ut| ut.normalize())
.collect::<Vec<_>>();
if do_sort {
list.sort();
}
list.sort();
last = UseSegment::List(list);
}

Expand Down Expand Up @@ -681,75 +679,64 @@ mod test {

#[test]
fn test_use_tree_normalize() {
assert_eq!(parse_use_tree("a::self").normalize(), parse_use_tree("a"));
assert_eq!(
parse_use_tree("a::self").normalize(true),
parse_use_tree("a")
);
assert_eq!(
parse_use_tree("a::self as foo").normalize(true),
parse_use_tree("a::self as foo").normalize(),
parse_use_tree("a as foo")
);
assert_eq!(parse_use_tree("a::{self}").normalize(), parse_use_tree("a"));
assert_eq!(parse_use_tree("a::{b}").normalize(), parse_use_tree("a::b"));
assert_eq!(
parse_use_tree("a::{self}").normalize(true),
parse_use_tree("a")
);
assert_eq!(
parse_use_tree("a::{b}").normalize(true),
parse_use_tree("a::b")
);
assert_eq!(
parse_use_tree("a::{b, c::self}").normalize(true),
parse_use_tree("a::{b, c::self}").normalize(),
parse_use_tree("a::{b, c}")
);
assert_eq!(
parse_use_tree("a::{b as bar, c::self}").normalize(true),
parse_use_tree("a::{b as bar, c::self}").normalize(),
parse_use_tree("a::{b as bar, c}")
);
}

#[test]
fn test_use_tree_ord() {
assert!(parse_use_tree("a").normalize(true) < parse_use_tree("aa").normalize(true));
assert!(parse_use_tree("a").normalize(true) < parse_use_tree("a::a").normalize(true));
assert!(parse_use_tree("a").normalize(true) < parse_use_tree("*").normalize(true));
assert!(parse_use_tree("a").normalize(true) < parse_use_tree("{a, b}").normalize(true));
assert!(parse_use_tree("*").normalize(true) < parse_use_tree("{a, b}").normalize(true));
assert!(parse_use_tree("a").normalize() < parse_use_tree("aa").normalize());
assert!(parse_use_tree("a").normalize() < parse_use_tree("a::a").normalize());
assert!(parse_use_tree("a").normalize() < parse_use_tree("*").normalize());
assert!(parse_use_tree("a").normalize() < parse_use_tree("{a, b}").normalize());
assert!(parse_use_tree("*").normalize() < parse_use_tree("{a, b}").normalize());

assert!(
parse_use_tree("aaaaaaaaaaaaaaa::{bb, cc, dddddddd}").normalize(true)
< parse_use_tree("aaaaaaaaaaaaaaa::{bb, cc, ddddddddd}").normalize(true)
);
assert!(
parse_use_tree("serde::de::{Deserialize}").normalize(true)
< parse_use_tree("serde_json").normalize(true)
parse_use_tree("aaaaaaaaaaaaaaa::{bb, cc, dddddddd}").normalize()
< parse_use_tree("aaaaaaaaaaaaaaa::{bb, cc, ddddddddd}").normalize()
);
assert!(
parse_use_tree("a::b::c").normalize(true) < parse_use_tree("a::b::*").normalize(true)
parse_use_tree("serde::de::{Deserialize}").normalize()
< parse_use_tree("serde_json").normalize()
);
assert!(parse_use_tree("a::b::c").normalize() < parse_use_tree("a::b::*").normalize());
assert!(
parse_use_tree("foo::{Bar, Baz}").normalize(true)
< parse_use_tree("{Bar, Baz}").normalize(true)
parse_use_tree("foo::{Bar, Baz}").normalize()
< parse_use_tree("{Bar, Baz}").normalize()
);

assert!(
parse_use_tree("foo::{self as bar}").normalize(true)
< parse_use_tree("foo::{qux as bar}").normalize(true)
parse_use_tree("foo::{self as bar}").normalize()
< parse_use_tree("foo::{qux as bar}").normalize()
);
assert!(
parse_use_tree("foo::{qux as bar}").normalize(true)
< parse_use_tree("foo::{baz, qux as bar}").normalize(true)
parse_use_tree("foo::{qux as bar}").normalize()
< parse_use_tree("foo::{baz, qux as bar}").normalize()
);
assert!(
parse_use_tree("foo::{self as bar, baz}").normalize(true)
< parse_use_tree("foo::{baz, qux as bar}").normalize(true)
parse_use_tree("foo::{self as bar, baz}").normalize()
< parse_use_tree("foo::{baz, qux as bar}").normalize()
);

assert!(parse_use_tree("foo").normalize(true) < parse_use_tree("Foo").normalize(true));
assert!(parse_use_tree("foo").normalize(true) < parse_use_tree("foo::Bar").normalize(true));
assert!(parse_use_tree("foo").normalize() < parse_use_tree("Foo").normalize());
assert!(parse_use_tree("foo").normalize() < parse_use_tree("foo::Bar").normalize());

assert!(
parse_use_tree("std::cmp::{d, c, b, a}").normalize(true)
< parse_use_tree("std::cmp::{b, e, g, f}").normalize(true)
parse_use_tree("std::cmp::{d, c, b, a}").normalize()
< parse_use_tree("std::cmp::{b, e, g, f}").normalize()
);
}
}
2 changes: 1 addition & 1 deletion src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -42,8 +42,8 @@ use std::time::Duration;
use syntax::ast;
pub use syntax::codemap::FileName;
use syntax::codemap::{CodeMap, FilePathMapping};
use syntax::errors::{DiagnosticBuilder, Handler};
use syntax::errors::emitter::{ColorConfig, EmitterWriter};
use syntax::errors::{DiagnosticBuilder, Handler};
use syntax::parse::{self, ParseSess};

use checkstyle::{output_footer, output_header};
Expand Down
2 changes: 1 addition & 1 deletion src/reorder.rs
Original file line number Diff line number Diff line change
Expand Up @@ -207,7 +207,7 @@ impl ReorderableItemKind {

pub fn in_group(&self) -> bool {
match *self {
ReorderableItemKind::ExternCrate => false,
ReorderableItemKind::ExternCrate => true,
ReorderableItemKind::Mod => true,
ReorderableItemKind::Use => true,
ReorderableItemKind::Other => false,
Expand Down
13 changes: 8 additions & 5 deletions tests/target/extern.rs
Original file line number Diff line number Diff line change
@@ -1,14 +1,17 @@
// rustfmt-normalize_comments: true

extern crate bar;
extern crate chrono;
extern crate dotenv;
extern crate foo;
extern crate foo;
extern crate foo as bar;

extern crate chrono;
extern crate dotenv;
extern crate futures;
extern crate proc_macro;

extern crate bar;
extern crate foo;

// #2315
extern crate proc_macro;
extern crate proc_macro2;

extern "C" {
Expand Down
2 changes: 1 addition & 1 deletion tests/target/import-fencepost-length.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
use aaaaaaaaaaaaaaa::bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb;
use aaaaaaaaaaaaaaa::{bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb, ccccccccccccccccccccccccccccccc, dddddddd};
use aaaaaaaaaaaaaaa::{bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb, ccccccccccccccccccccccccccccccc,
ddddddddd};
use aaaaaaaaaaaaaaa::bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb;
2 changes: 1 addition & 1 deletion tests/target/imports.rs
Original file line number Diff line number Diff line change
Expand Up @@ -54,9 +54,9 @@ use foo::{baz, qux as bar};

// With absolute paths
use foo;
use Foo;
use foo::Bar;
use foo::{Bar, Baz};
use Foo;
use {Bar, Baz};

// Root globs
Expand Down

0 comments on commit 30402d8

Please sign in to comment.