about summary refs log tree commit diff
diff options
context:
space:
mode:
authorMartin Fischer <martin@push-f.com>2023-06-16 11:11:20 +0200
committerMartin Fischer <martin@push-f.com>2023-06-16 11:53:25 +0200
commit894d5dafac8cb087a353047f33b4330c2a78cf2d (patch)
tree86460fa4ac0089c660672c23586920c4dca7be6c
parenta94aac607cbae80984db04e9e4fd1439ef0003e4 (diff)
downloadrust-894d5dafac8cb087a353047f33b4330c2a78cf2d.tar.gz
rust-894d5dafac8cb087a353047f33b4330c2a78cf2d.zip
Make `--explain` subcommand return 1 for missing lints
-rw-r--r--clippy_lints/src/lib.rs4
-rw-r--r--src/main.rs4
2 files changed, 6 insertions, 2 deletions
diff --git a/clippy_lints/src/lib.rs b/clippy_lints/src/lib.rs
index cd1b63bdba2..f0a873b91eb 100644
--- a/clippy_lints/src/lib.rs
+++ b/clippy_lints/src/lib.rs
@@ -495,7 +495,7 @@ pub(crate) struct LintInfo {
     explanation: &'static str,
 }
 
-pub fn explain(name: &str) {
+pub fn explain(name: &str) -> i32 {
     let target = format!("clippy::{}", name.to_ascii_uppercase());
     if let Some(info) = declared_lints::LINTS.iter().find(|info| info.lint.name == target) {
         println!("{}", info.explanation);
@@ -512,8 +512,10 @@ pub fn explain(name: &str) {
                 println!("  - {}: {} (default: {})", conf.name, conf.doc, conf.default);
             }
         }
+        0
     } else {
         println!("unknown lint: {name}");
+        1
     }
 }
 
diff --git a/src/main.rs b/src/main.rs
index 188ff87abfc..300c84a1442 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -57,7 +57,9 @@ pub fn main() {
     if let Some(pos) = env::args().position(|a| a == "--explain") {
         if let Some(mut lint) = env::args().nth(pos + 1) {
             lint.make_ascii_lowercase();
-            clippy_lints::explain(&lint.strip_prefix("clippy::").unwrap_or(&lint).replace('-', "_"));
+            process::exit(clippy_lints::explain(
+                &lint.strip_prefix("clippy::").unwrap_or(&lint).replace('-', "_"),
+            ));
         } else {
             show_help();
         }