summaryrefslogtreecommitdiffstats
path: root/src/test/ui/underscore-imports/basic.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/ui/underscore-imports/basic.rs')
-rw-r--r--src/test/ui/underscore-imports/basic.rs62
1 files changed, 62 insertions, 0 deletions
diff --git a/src/test/ui/underscore-imports/basic.rs b/src/test/ui/underscore-imports/basic.rs
new file mode 100644
index 000000000..c021ad5ee
--- /dev/null
+++ b/src/test/ui/underscore-imports/basic.rs
@@ -0,0 +1,62 @@
+// check-pass
+// aux-build:underscore-imports.rs
+
+#![warn(unused_imports, unused_extern_crates)]
+
+#[macro_use]
+extern crate underscore_imports as _;
+
+do_nothing!(); // OK
+
+struct S;
+
+mod m {
+ pub trait Tr1 {
+ fn tr1_is_in_scope(&self) {}
+ }
+ pub trait Tr2 {
+ fn tr2_is_in_scope(&self) {}
+ }
+
+ impl Tr1 for ::S {}
+ impl Tr2 for ::S {}
+}
+
+mod unused {
+ use m::Tr1 as _; //~ WARN unused import
+ use S as _; //~ WARN unused import
+ extern crate core as _; // OK
+}
+
+mod outer {
+ mod middle {
+ pub use m::Tr1 as _;
+ pub use m::Tr2 as _; // OK, no name conflict
+ struct Tr1; // OK, no name conflict
+ fn check() {
+ // Both traits are in scope
+ ::S.tr1_is_in_scope();
+ ::S.tr2_is_in_scope();
+ }
+
+ mod inner {
+ // `_` imports are fetched by glob imports
+ use super::*;
+ fn check() {
+ // Both traits are in scope
+ ::S.tr1_is_in_scope();
+ ::S.tr2_is_in_scope();
+ }
+ }
+ }
+
+ // `_` imports are fetched by glob imports
+ use self::middle::*;
+ fn check() {
+ // Both traits are in scope
+ ::S.tr1_is_in_scope();
+ ::S.tr2_is_in_scope();
+ }
+}
+
+fn main() {}