summaryrefslogtreecommitdiffstats
path: root/src/tools/rustfmt/tests/source/imports
diff options
context:
space:
mode:
Diffstat (limited to 'src/tools/rustfmt/tests/source/imports')
-rw-r--r--src/tools/rustfmt/tests/source/imports/imports-impl-only-use.rs4
-rw-r--r--src/tools/rustfmt/tests/source/imports/imports-reorder-lines-and-items.rs7
-rw-r--r--src/tools/rustfmt/tests/source/imports/imports-reorder-lines.rs32
-rw-r--r--src/tools/rustfmt/tests/source/imports/imports-reorder.rs5
-rw-r--r--src/tools/rustfmt/tests/source/imports/imports.rs107
-rw-r--r--src/tools/rustfmt/tests/source/imports/imports_block_indent.rs2
-rw-r--r--src/tools/rustfmt/tests/source/imports/imports_granularity_crate.rs65
-rw-r--r--src/tools/rustfmt/tests/source/imports/imports_granularity_default-with-dups.rs6
-rw-r--r--src/tools/rustfmt/tests/source/imports/imports_granularity_item-with-dups-StdExternalCrate-no-reorder.rs13
-rw-r--r--src/tools/rustfmt/tests/source/imports/imports_granularity_item-with-dups.rs11
-rw-r--r--src/tools/rustfmt/tests/source/imports/imports_granularity_item.rs34
-rw-r--r--src/tools/rustfmt/tests/source/imports/imports_granularity_module.rs47
12 files changed, 333 insertions, 0 deletions
diff --git a/src/tools/rustfmt/tests/source/imports/imports-impl-only-use.rs b/src/tools/rustfmt/tests/source/imports/imports-impl-only-use.rs
new file mode 100644
index 000000000..d290d8d91
--- /dev/null
+++ b/src/tools/rustfmt/tests/source/imports/imports-impl-only-use.rs
@@ -0,0 +1,4 @@
+#![feature(underscore_imports)]
+
+use attr;
+use std::iter::Iterator as _;
diff --git a/src/tools/rustfmt/tests/source/imports/imports-reorder-lines-and-items.rs b/src/tools/rustfmt/tests/source/imports/imports-reorder-lines-and-items.rs
new file mode 100644
index 000000000..b6380f31c
--- /dev/null
+++ b/src/tools/rustfmt/tests/source/imports/imports-reorder-lines-and-items.rs
@@ -0,0 +1,7 @@
+/// This comment should stay with `use std::str;`
+use std::str;
+use std::cmp::{d, c, b, a};
+use std::ddd::aaa;
+use std::ddd::{d as p, c as g, b, a};
+// This comment should stay with `use std::ddd:bbb;`
+use std::ddd::bbb;
diff --git a/src/tools/rustfmt/tests/source/imports/imports-reorder-lines.rs b/src/tools/rustfmt/tests/source/imports/imports-reorder-lines.rs
new file mode 100644
index 000000000..2b018544e
--- /dev/null
+++ b/src/tools/rustfmt/tests/source/imports/imports-reorder-lines.rs
@@ -0,0 +1,32 @@
+use std::str;
+use std::cmp::{d, c, b, a};
+use std::cmp::{b, e, g, f};
+use std::ddd::aaa;
+// This comment should stay with `use std::ddd;`
+use std::ddd;
+use std::ddd::bbb;
+
+mod test {
+}
+
+use aaa::bbb;
+use aaa;
+use aaa::*;
+
+mod test {}
+// If item names are equal, order by rename
+
+use test::{a as bb, b};
+use test::{a as aa, c};
+
+mod test {}
+// If item names are equal, order by rename - no rename comes before a rename
+
+use test::{a as bb, b};
+use test::{a, c};
+
+mod test {}
+// `self` always comes first
+
+use test::{a as aa, c};
+use test::{self as bb, b};
diff --git a/src/tools/rustfmt/tests/source/imports/imports-reorder.rs b/src/tools/rustfmt/tests/source/imports/imports-reorder.rs
new file mode 100644
index 000000000..cbe9d6ca7
--- /dev/null
+++ b/src/tools/rustfmt/tests/source/imports/imports-reorder.rs
@@ -0,0 +1,5 @@
+// rustfmt-normalize_comments: true
+
+use path::{C,/*A*/ A, B /* B */, self /* self */};
+
+use {ab, ac, aa, Z, b};
diff --git a/src/tools/rustfmt/tests/source/imports/imports.rs b/src/tools/rustfmt/tests/source/imports/imports.rs
new file mode 100644
index 000000000..4dfc6ed94
--- /dev/null
+++ b/src/tools/rustfmt/tests/source/imports/imports.rs
@@ -0,0 +1,107 @@
+// rustfmt-normalize_comments: true
+
+// Imports.
+
+// Long import.
+use rustc_ast::ast::{ItemForeignMod, ItemImpl, ItemMac, ItemMod, ItemStatic, ItemDefaultImpl};
+use exceedingly::looooooooooooooooooooooooooooooooooooooooooooooooooooooooooong::import::path::{ItemA, ItemB};
+use exceedingly::loooooooooooooooooooooooooooooooooooooooooooooooooooooooong::import::path::{ItemA, ItemB};
+
+use list::{
+ // Some item
+ SomeItem /* Comment */, /* Another item */ AnotherItem /* Another Comment */, // Last Item
+ LastItem
+};
+
+use test::{ Other /* C */ , /* A */ self /* B */ };
+
+use rustc_ast::{self};
+use {/* Pre-comment! */
+ Foo, Bar /* comment */};
+use Foo::{Bar, Baz};
+pub use rustc_ast::ast::{Expr_, Expr, ExprAssign, ExprCall, ExprMethodCall, ExprPath};
+
+use rustc_ast::some::{};
+
+use self;
+use std::io::{self};
+use std::io::self;
+
+mod Foo {
+ pub use rustc_ast::ast::{
+ ItemForeignMod,
+ ItemImpl,
+ ItemMac,
+ ItemMod,
+ ItemStatic,
+ ItemDefaultImpl
+ };
+
+ mod Foo2 {
+ pub use rustc_ast::ast::{ItemForeignMod, ItemImpl, ItemMac, ItemMod, ItemStatic, self, ItemDefaultImpl};
+ }
+}
+
+fn test() {
+use Baz::*;
+ use Qux;
+}
+
+// Simple imports
+use foo::bar::baz as baz ;
+use bar::quux as kaas;
+use foo;
+
+// With aliases.
+use foo::{self as bar, baz};
+use foo::{self as bar};
+use foo::{qux as bar};
+use foo::{baz, qux as bar};
+
+// With absolute paths
+use ::foo;
+use ::foo::{Bar};
+use ::foo::{Bar, Baz};
+use ::{Foo};
+use ::{Bar, Baz};
+
+// Root globs
+use *;
+use ::*;
+
+// spaces used to cause glob imports to disappear (#1356)
+use super:: * ;
+use foo::issue_1356:: * ;
+
+// We shouldn't remove imports which have attributes attached (#1858)
+#[cfg(unix)]
+use self::unix::{};
+
+// nested imports
+use foo::{a, bar::{baz, qux, xxxxxxxxxxx, yyyyyyyyyyyyy, zzzzzzzzzzzzzzzz, foo::{a, b, cxxxxxxxxxxxxx, yyyyyyyyyyyyyy, zzzzzzzzzzzzzzzz}}, b, boo, c,};
+
+use fooo::{baar::{foobar::{xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx, yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy, zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz}}, z, bar, bar::*, x, y};
+
+use exonum::{api::{Api, ApiError}, blockchain::{self, BlockProof, Blockchain, Transaction, TransactionSet}, crypto::{Hash, PublicKey}, helpers::Height, node::TransactionSend, storage::{ListProof, MapProof}};
+
+// nested imports with a single sub-tree.
+use a::{b::{c::*}};
+use a::{b::{c::{}}};
+use a::{b::{c::d}};
+use a::{b::{c::{xxx, yyy, zzz}}};
+
+// #2645
+/// This line is not affected.
+// This line is deleted.
+use c;
+
+// #2670
+#[macro_use]
+use imports_with_attr;
+
+// #2888
+use std::f64::consts::{SQRT_2, E, PI};
+
+// #3273
+#[rustfmt::skip]
+use std::fmt::{self, {Display, Formatter}};
diff --git a/src/tools/rustfmt/tests/source/imports/imports_block_indent.rs b/src/tools/rustfmt/tests/source/imports/imports_block_indent.rs
new file mode 100644
index 000000000..016deefe5
--- /dev/null
+++ b/src/tools/rustfmt/tests/source/imports/imports_block_indent.rs
@@ -0,0 +1,2 @@
+// #2569
+use apns2::request::notification::{Notificatio, NotificationBuilder, Priority, SilentNotificationBuilder};
diff --git a/src/tools/rustfmt/tests/source/imports/imports_granularity_crate.rs b/src/tools/rustfmt/tests/source/imports/imports_granularity_crate.rs
new file mode 100644
index 000000000..f6f7761e8
--- /dev/null
+++ b/src/tools/rustfmt/tests/source/imports/imports_granularity_crate.rs
@@ -0,0 +1,65 @@
+// rustfmt-imports_granularity: Crate
+
+use a::{c,d,b};
+use a::{d, e, b, a, f};
+use a::{f, g, c};
+
+#[doc(hidden)]
+use a::b;
+use a::c;
+use a::d;
+
+use a::{c, d, e};
+#[doc(hidden)]
+use a::b;
+use a::d;
+
+pub use foo::bar;
+use foo::{a, b, c};
+pub use foo::foobar;
+
+use a::{b::{c::*}};
+use a::{b::{c::{}}};
+use a::{b::{c::d}};
+use a::{b::{c::{xxx, yyy, zzz}}};
+
+// https://github.com/rust-lang/rustfmt/issues/3808
+use d::{self};
+use e::{self as foo};
+use f::{self, b};
+use g::a;
+use g::{self, b};
+use h::{a};
+use i::a::{self};
+use j::{a::{self}};
+
+use {k::{a, b}, l::{a, b}};
+use {k::{c, d}, l::{c, d}};
+
+use b::{f::g, h::{i, j} /* After b::h group */};
+use b::e;
+use b::{/* Before b::l group */ l::{self, m, n::o, p::*}, q};
+use b::d;
+use b::r; // After b::r
+use b::q::{self /* After b::q::self */};
+use b::u::{
+ a,
+ b,
+};
+use b::t::{
+ // Before b::t::a
+ a,
+ b,
+};
+use b::s::{
+ a,
+ b, // After b::s::b
+};
+use b::v::{
+ // Before b::v::a
+ a,
+ // Before b::v::b
+ b,
+};
+use b::t::{/* Before b::t::self */ self};
+use b::c;
diff --git a/src/tools/rustfmt/tests/source/imports/imports_granularity_default-with-dups.rs b/src/tools/rustfmt/tests/source/imports/imports_granularity_default-with-dups.rs
new file mode 100644
index 000000000..cbb21a9f1
--- /dev/null
+++ b/src/tools/rustfmt/tests/source/imports/imports_granularity_default-with-dups.rs
@@ -0,0 +1,6 @@
+use crate::lexer;
+use crate::lexer::tokens::TokenData;
+use crate::lexer::{tokens::TokenData};
+use crate::lexer::self;
+use crate::lexer::{self};
+use crate::lexer::{self, tokens::TokenData};
diff --git a/src/tools/rustfmt/tests/source/imports/imports_granularity_item-with-dups-StdExternalCrate-no-reorder.rs b/src/tools/rustfmt/tests/source/imports/imports_granularity_item-with-dups-StdExternalCrate-no-reorder.rs
new file mode 100644
index 000000000..e23705a88
--- /dev/null
+++ b/src/tools/rustfmt/tests/source/imports/imports_granularity_item-with-dups-StdExternalCrate-no-reorder.rs
@@ -0,0 +1,13 @@
+// rustfmt-imports_granularity: Item
+// rustfmt-reorder_imports: false
+// rustfmt-group_imports: StdExternalCrate
+
+use crate::lexer;
+use crate::lexer;
+use crate::lexer::tokens::TokenData;
+use crate::lexer::{tokens::TokenData};
+use crate::lexer::self;
+use crate::lexer;
+use crate::lexer;
+use crate::lexer::{self};
+use crate::lexer::{self, tokens::TokenData};
diff --git a/src/tools/rustfmt/tests/source/imports/imports_granularity_item-with-dups.rs b/src/tools/rustfmt/tests/source/imports/imports_granularity_item-with-dups.rs
new file mode 100644
index 000000000..3e9589c29
--- /dev/null
+++ b/src/tools/rustfmt/tests/source/imports/imports_granularity_item-with-dups.rs
@@ -0,0 +1,11 @@
+// rustfmt-imports_granularity: Item
+
+use crate::lexer;
+use crate::lexer;
+use crate::lexer::tokens::TokenData;
+use crate::lexer::{tokens::TokenData};
+use crate::lexer::self;
+use crate::lexer;
+use crate::lexer;
+use crate::lexer::{self};
+use crate::lexer::{self, tokens::TokenData};
diff --git a/src/tools/rustfmt/tests/source/imports/imports_granularity_item.rs b/src/tools/rustfmt/tests/source/imports/imports_granularity_item.rs
new file mode 100644
index 000000000..b82c0d33c
--- /dev/null
+++ b/src/tools/rustfmt/tests/source/imports/imports_granularity_item.rs
@@ -0,0 +1,34 @@
+// rustfmt-imports_granularity: Item
+
+use a::{b, c, d};
+use a::{f::g, h::{i, j}};
+use a::{l::{self, m, n::o, p::*}};
+use a::q::{self};
+
+use b::{f::g, h::{i, j} /* After b::h group */};
+use b::e;
+use b::{/* Before b::l group */ l::{self, m, n::o, p::*}, q};
+use b::d;
+use b::r; // After b::r
+use b::q::{self /* After b::q::self */};
+use b::u::{
+ a,
+ b,
+};
+use b::t::{
+ // Before b::t::a
+ a,
+ b,
+};
+use b::s::{
+ a,
+ b, // After b::s::b
+};
+use b::v::{
+ // Before b::v::a
+ a,
+ // Before b::v::b
+ b,
+};
+use b::t::{/* Before b::t::self */ self};
+use b::c;
diff --git a/src/tools/rustfmt/tests/source/imports/imports_granularity_module.rs b/src/tools/rustfmt/tests/source/imports/imports_granularity_module.rs
new file mode 100644
index 000000000..c7f68cea6
--- /dev/null
+++ b/src/tools/rustfmt/tests/source/imports/imports_granularity_module.rs
@@ -0,0 +1,47 @@
+// rustfmt-imports_granularity: Module
+
+use a::{b::c, d::e};
+use a::{f, g::{h, i}};
+use a::{j::{self, k::{self, l}, m}, n::{o::p, q}};
+pub use a::{r::s, t};
+use b::{c::d, self};
+
+#[cfg(test)]
+use foo::{a::b, c::d};
+use foo::e;
+
+use bar::{
+ // comment
+ a::b,
+ // more comment
+ c::d,
+ e::f,
+};
+
+use b::{f::g, h::{i, j} /* After b::h group */};
+use b::e;
+use b::{/* Before b::l group */ l::{self, m, n::o, p::*}, q};
+use b::d;
+use b::r; // After b::r
+use b::q::{self /* After b::q::self */};
+use b::u::{
+ a,
+ b,
+};
+use b::t::{
+ // Before b::t::a
+ a,
+ b,
+};
+use b::s::{
+ a,
+ b, // After b::s::b
+};
+use b::v::{
+ // Before b::v::a
+ a,
+ // Before b::v::b
+ b,
+};
+use b::t::{/* Before b::t::self */ self};
+use b::c;