]> git.lizzy.rs Git - rust.git/commitdiff
extend `unused_extern_crates` lint with a suggestion to remove
authorNiko Matsakis <niko@alum.mit.edu>
Wed, 23 May 2018 23:25:59 +0000 (19:25 -0400)
committerNiko Matsakis <niko@alum.mit.edu>
Fri, 1 Jun 2018 15:00:18 +0000 (11:00 -0400)
src/librustc_typeck/check_unused.rs
src/test/ui/rust-2018/extern-crate-idiomatic-in-2018.fixed [new file with mode: 0644]
src/test/ui/rust-2018/extern-crate-idiomatic-in-2018.rs [new file with mode: 0644]
src/test/ui/rust-2018/extern-crate-idiomatic-in-2018.stderr [new file with mode: 0644]

index bff849d7ae8e99d2a8cd83138442c588c6c4dd24..b5772df1306ed2ad096771f424eb114059ae3cf5 100644 (file)
@@ -109,6 +109,8 @@ pub fn check_crate<'a, 'tcx>(tcx: TyCtxt<'a, 'tcx, 'tcx>) {
         let id = tcx.hir.hir_to_node_id(hir_id);
         let lint = lint::builtin::UNUSED_EXTERN_CRATES;
         let msg = "unused extern crate";
-        tcx.lint_node(lint, id, span, msg);
+        tcx.struct_span_lint_node(lint, id, span, msg)
+            .span_suggestion_short(span, "remove it", "".to_string())
+            .emit();
     }
 }
diff --git a/src/test/ui/rust-2018/extern-crate-idiomatic-in-2018.fixed b/src/test/ui/rust-2018/extern-crate-idiomatic-in-2018.fixed
new file mode 100644 (file)
index 0000000..d8bf656
--- /dev/null
@@ -0,0 +1,36 @@
+// Copyright 2018 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+// aux-build:edition-lint-paths.rs
+// run-rustfix
+// compile-flags:--edition 2018
+
+// The "normal case". Ideally we would remove the `extern crate` here,
+// but we don't.
+
+#![feature(rust_2018_preview)]
+#![deny(absolute_path_not_starting_with_crate)]
+#![deny(unused_extern_crates)]
+#![allow(dead_code)]
+
+
+//~^ ERROR unused extern crate
+
+extern crate edition_lint_paths as bar;
+
+fn main() {
+    // This is not considered to *use* the `extern crate` in Rust 2018:
+    use edition_lint_paths::foo;
+    foo();
+
+    // But this should be a use of the (renamed) crate:
+    crate::bar::foo();
+}
+
diff --git a/src/test/ui/rust-2018/extern-crate-idiomatic-in-2018.rs b/src/test/ui/rust-2018/extern-crate-idiomatic-in-2018.rs
new file mode 100644 (file)
index 0000000..6e74125
--- /dev/null
@@ -0,0 +1,36 @@
+// Copyright 2018 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+// aux-build:edition-lint-paths.rs
+// run-rustfix
+// compile-flags:--edition 2018
+
+// The "normal case". Ideally we would remove the `extern crate` here,
+// but we don't.
+
+#![feature(rust_2018_preview)]
+#![deny(absolute_path_not_starting_with_crate)]
+#![deny(unused_extern_crates)]
+#![allow(dead_code)]
+
+extern crate edition_lint_paths;
+//~^ ERROR unused extern crate
+
+extern crate edition_lint_paths as bar;
+
+fn main() {
+    // This is not considered to *use* the `extern crate` in Rust 2018:
+    use edition_lint_paths::foo;
+    foo();
+
+    // But this should be a use of the (renamed) crate:
+    crate::bar::foo();
+}
+
diff --git a/src/test/ui/rust-2018/extern-crate-idiomatic-in-2018.stderr b/src/test/ui/rust-2018/extern-crate-idiomatic-in-2018.stderr
new file mode 100644 (file)
index 0000000..8fae69e
--- /dev/null
@@ -0,0 +1,14 @@
+error: unused extern crate
+  --> $DIR/extern-crate-idiomatic-in-2018.rs:23:1
+   |
+LL | extern crate edition_lint_paths;
+   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove it
+   |
+note: lint level defined here
+  --> $DIR/extern-crate-idiomatic-in-2018.rs:20:9
+   |
+LL | #![deny(unused_extern_crates)]
+   |         ^^^^^^^^^^^^^^^^^^^^
+
+error: aborting due to previous error
+