about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorEsteban Küber <esteban@kuber.com.ar>2016-11-30 00:07:31 -0800
committerEsteban Küber <esteban@kuber.com.ar>2016-12-05 17:20:08 -0800
commit58e70e7b14fcf58ea4ee0cedd198cd1ab5ececa4 (patch)
treede3084f5de367b5ba796587e37faec277c348211 /src
parentebeee0e27e32e212979d9f38d285b1dc2816cd0a (diff)
downloadrust-58e70e7b14fcf58ea4ee0cedd198cd1ab5ececa4.tar.gz
rust-58e70e7b14fcf58ea4ee0cedd198cd1ab5ececa4.zip
Warn when an import list is empty
For a given file

```rust
use std::*;
use std::{};
```

output the following warnings

```
warning: unused import: `use std::{};`, #[warn(unused_imports)] on by default
 --> file.rs:2:1
  |
2 | use std::{};
  | ^^^^^^^^^^^^

warning: unused import: `std::*;`, #[warn(unused_imports)] on by default
 --> file.rs:1:5
  |
1 | use std::*;
  |     ^^^^^^^
```
Diffstat (limited to 'src')
-rw-r--r--src/librustc_resolve/check_unused.rs6
-rw-r--r--src/test/compile-fail/issue-28388-1.rs4
-rw-r--r--src/test/compile-fail/issue-28388-2.rs3
-rw-r--r--src/test/compile-fail/issue-28388-3.rs3
-rw-r--r--src/test/compile-fail/lint-unused-imports.rs2
5 files changed, 15 insertions, 3 deletions
diff --git a/src/librustc_resolve/check_unused.rs b/src/librustc_resolve/check_unused.rs
index 492c5e695bb..5db622a4e7d 100644
--- a/src/librustc_resolve/check_unused.rs
+++ b/src/librustc_resolve/check_unused.rs
@@ -103,6 +103,12 @@ impl<'a, 'b> Visitor for UnusedImportCheckVisitor<'a, 'b> {
                     }
 
                     ViewPathList(_, ref list) => {
+                        if list.len() == 0 {
+                            self.unused_imports
+                                .entry(item.id)
+                                .or_insert_with(NodeMap)
+                                .insert(item.id, item.span);
+                        }
                         for i in list {
                             self.check_import(item.id, i.node.id, i.span);
                         }
diff --git a/src/test/compile-fail/issue-28388-1.rs b/src/test/compile-fail/issue-28388-1.rs
index bee05cd5313..ed7851ec0f1 100644
--- a/src/test/compile-fail/issue-28388-1.rs
+++ b/src/test/compile-fail/issue-28388-1.rs
@@ -10,6 +10,8 @@
 
 // Prefix in imports with empty braces should be resolved and checked privacy, stability, etc.
 
-use foo::{}; //~ ERROR failed to resolve. Maybe a missing `extern crate foo;`?
+use foo::{};
+//~^ ERROR failed to resolve. Maybe a missing `extern crate foo;`?
+//~| NOTE foo
 
 fn main() {}
diff --git a/src/test/compile-fail/issue-28388-2.rs b/src/test/compile-fail/issue-28388-2.rs
index 837dc67c804..4ed5bfab06f 100644
--- a/src/test/compile-fail/issue-28388-2.rs
+++ b/src/test/compile-fail/issue-28388-2.rs
@@ -14,6 +14,7 @@ mod m {
     mod n {}
 }
 
-use m::n::{}; //~ ERROR module `n` is private
+use m::n::{};
+//~^ ERROR module `n` is private
 
 fn main() {}
diff --git a/src/test/compile-fail/issue-28388-3.rs b/src/test/compile-fail/issue-28388-3.rs
index 0cb669f5f8f..4baaa16e772 100644
--- a/src/test/compile-fail/issue-28388-3.rs
+++ b/src/test/compile-fail/issue-28388-3.rs
@@ -14,7 +14,8 @@
 
 extern crate lint_stability;
 
-use lint_stability::UnstableStruct::{}; //~ ERROR use of unstable library feature 'test_feature'
+use lint_stability::UnstableStruct::{};
+//~^ ERROR use of unstable library feature 'test_feature'
 use lint_stability::StableStruct::{}; // OK
 
 fn main() {}
diff --git a/src/test/compile-fail/lint-unused-imports.rs b/src/test/compile-fail/lint-unused-imports.rs
index 5b1c04946a4..f6f7c210f46 100644
--- a/src/test/compile-fail/lint-unused-imports.rs
+++ b/src/test/compile-fail/lint-unused-imports.rs
@@ -15,6 +15,8 @@ use bar::c::cc as cal;
 
 use std::mem::*;            // shouldn't get errors for not using
                             // everything imported
+use std::fmt::{};
+//~^ ERROR unused import: `use std::fmt::{};`
 
 // Should get errors for both 'Some' and 'None'
 use std::option::Option::{Some, None};