about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorZack M. Davis <code@zackmdavis.net>2018-07-14 20:52:40 -0700
committerZack M. Davis <code@zackmdavis.net>2018-07-14 22:09:27 -0700
commitd351370fa12cd01b2dc67fd447a2d67b05dac3a1 (patch)
tree87dd59062f0cd60f4791cde25b5d2941701c7a9c /src
parent7e320595320855beb97a5959d67bd12f2afca4d1 (diff)
downloadrust-d351370fa12cd01b2dc67fd447a2d67b05dac3a1.tar.gz
rust-d351370fa12cd01b2dc67fd447a2d67b05dac3a1.zip
structured suggestion for renamed-and-removed-lints
Diffstat (limited to 'src')
-rw-r--r--src/librustc/lint/context.rs12
-rw-r--r--src/librustc/lint/levels.rs24
-rw-r--r--src/test/compile-fail/lint-removed-cmdline.rs2
-rw-r--r--src/test/compile-fail/lint-removed.rs2
-rw-r--r--src/test/compile-fail/lint-renamed-cmdline.rs2
-rw-r--r--src/test/compile-fail/lint-renamed.rs2
6 files changed, 27 insertions, 17 deletions
diff --git a/src/librustc/lint/context.rs b/src/librustc/lint/context.rs
index c9874f510f7..2a44845b980 100644
--- a/src/librustc/lint/context.rs
+++ b/src/librustc/lint/context.rs
@@ -131,8 +131,8 @@ pub enum CheckLintNameResult<'a> {
     /// Lint doesn't exist
     NoLint,
     /// The lint is either renamed or removed. This is the warning
-    /// message.
-    Warning(String),
+    /// message, and an optional new name (`None` if removed).
+    Warning(String, Option<String>),
 }
 
 impl LintStore {
@@ -280,7 +280,7 @@ impl LintStore {
                                    level: Level) {
         let db = match self.check_lint_name(lint_name) {
             CheckLintNameResult::Ok(_) => None,
-            CheckLintNameResult::Warning(ref msg) => {
+            CheckLintNameResult::Warning(ref msg, _) => {
                 Some(sess.struct_warn(msg))
             },
             CheckLintNameResult::NoLint => {
@@ -313,12 +313,14 @@ impl LintStore {
         match self.by_name.get(lint_name) {
             Some(&Renamed(ref new_name, _)) => {
                 CheckLintNameResult::Warning(
-                    format!("lint {} has been renamed to {}", lint_name, new_name)
+                    format!("lint `{}` has been renamed to `{}`", lint_name, new_name),
+                    Some(new_name.to_owned())
                 )
             },
             Some(&Removed(ref reason)) => {
                 CheckLintNameResult::Warning(
-                    format!("lint {} has been removed: {}", lint_name, reason)
+                    format!("lint `{}` has been removed: `{}`", lint_name, reason),
+                    None
                 )
             },
             None => {
diff --git a/src/librustc/lint/levels.rs b/src/librustc/lint/levels.rs
index a1b84a7b716..b7b6aba970b 100644
--- a/src/librustc/lint/levels.rs
+++ b/src/librustc/lint/levels.rs
@@ -260,19 +260,27 @@ impl<'a> LintLevelsBuilder<'a> {
 
                     _ if !self.warn_about_weird_lints => {}
 
-                    CheckLintNameResult::Warning(ref msg) => {
+                    CheckLintNameResult::Warning(msg, renamed) => {
                         let lint = builtin::RENAMED_AND_REMOVED_LINTS;
                         let (level, src) = self.sets.get_lint_level(lint,
                                                                     self.cur,
                                                                     Some(&specs),
                                                                     &sess);
-                        lint::struct_lint_level(self.sess,
-                                                lint,
-                                                level,
-                                                src,
-                                                Some(li.span.into()),
-                                                msg)
-                            .emit();
+                        let mut err = lint::struct_lint_level(self.sess,
+                                                              lint,
+                                                              level,
+                                                              src,
+                                                              Some(li.span.into()),
+                                                              &msg);
+                        if let Some(new_name) = renamed {
+                            err.span_suggestion_with_applicability(
+                                li.span,
+                                "use the new name",
+                                new_name,
+                                Applicability::MachineApplicable
+                            );
+                        }
+                        err.emit();
                     }
                     CheckLintNameResult::NoLint => {
                         let lint = builtin::UNKNOWN_LINTS;
diff --git a/src/test/compile-fail/lint-removed-cmdline.rs b/src/test/compile-fail/lint-removed-cmdline.rs
index e1da5086612..09725b20146 100644
--- a/src/test/compile-fail/lint-removed-cmdline.rs
+++ b/src/test/compile-fail/lint-removed-cmdline.rs
@@ -13,7 +13,7 @@
 
 // compile-flags:-D raw_pointer_derive
 
-// error-pattern:lint raw_pointer_derive has been removed
+// error-pattern:lint `raw_pointer_derive` has been removed
 // error-pattern:requested on the command line with `-D raw_pointer_derive`
 
 #![warn(unused)]
diff --git a/src/test/compile-fail/lint-removed.rs b/src/test/compile-fail/lint-removed.rs
index aa7f535aa64..4e53852008f 100644
--- a/src/test/compile-fail/lint-removed.rs
+++ b/src/test/compile-fail/lint-removed.rs
@@ -13,6 +13,6 @@
 // default, and allowed in cargo dependency builds.
 // cc #30346
 
-#[deny(raw_pointer_derive)] //~ WARN raw_pointer_derive has been removed
+#[deny(raw_pointer_derive)] //~ WARN `raw_pointer_derive` has been removed
 #[deny(unused_variables)]
 fn main() { let unused = (); } //~ ERROR unused
diff --git a/src/test/compile-fail/lint-renamed-cmdline.rs b/src/test/compile-fail/lint-renamed-cmdline.rs
index 3b352b384ff..a5246206d95 100644
--- a/src/test/compile-fail/lint-renamed-cmdline.rs
+++ b/src/test/compile-fail/lint-renamed-cmdline.rs
@@ -10,7 +10,7 @@
 
 // compile-flags:-D unknown_features
 
-// error-pattern:lint unknown_features has been renamed to unused_features
+// error-pattern:lint `unknown_features` has been renamed to `unused_features`
 // error-pattern:requested on the command line with `-D unknown_features`
 // error-pattern:unused
 
diff --git a/src/test/compile-fail/lint-renamed.rs b/src/test/compile-fail/lint-renamed.rs
index 9e10ddf89ac..afe4aee7a1d 100644
--- a/src/test/compile-fail/lint-renamed.rs
+++ b/src/test/compile-fail/lint-renamed.rs
@@ -8,6 +8,6 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-#[deny(unknown_features)] //~ WARN lint unknown_features has been renamed to unused_features
+#[deny(unknown_features)] //~ WARN lint `unknown_features` has been renamed to `unused_features`
 #[deny(unused)]
 fn main() { let unused = (); } //~ ERROR unused