diff options
| author | bors <bors@rust-lang.org> | 2021-07-20 02:11:55 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2021-07-20 02:11:55 +0000 |
| commit | c9aa2595d9ba2313bbfcc8e0244231baa9c5d9e0 (patch) | |
| tree | df615d0337b8a367f9531217b7ac9ff3ff025d64 | |
| parent | 6535449a002264ee08dec8e741f1aadd97428fae (diff) | |
| parent | 25c66a13a9b9a646e247f8ed15828d621cdf30fa (diff) | |
| download | rust-c9aa2595d9ba2313bbfcc8e0244231baa9c5d9e0.tar.gz rust-c9aa2595d9ba2313bbfcc8e0244231baa9c5d9e0.zip | |
Auto merge of #84959 - camsteffen:lint-suggest-group, r=estebank
Suggest lint groups Fixes rust-lang/rust-clippy#6986
| -rw-r--r-- | compiler/rustc_lint/src/context.rs | 14 | ||||
| -rw-r--r-- | src/test/rustdoc-ui/unknown-renamed-lints.stderr | 2 | ||||
| -rw-r--r-- | src/test/ui/lint/lint-unknown-lint.rs | 4 | ||||
| -rw-r--r-- | src/test/ui/lint/lint-unknown-lint.stderr | 8 |
4 files changed, 19 insertions, 9 deletions
diff --git a/compiler/rustc_lint/src/context.rs b/compiler/rustc_lint/src/context.rs index c44df407f6b..c16d46efb88 100644 --- a/compiler/rustc_lint/src/context.rs +++ b/compiler/rustc_lint/src/context.rs @@ -481,17 +481,17 @@ impl LintStore { fn no_lint_suggestion(&self, lint_name: &str) -> CheckLintNameResult<'_> { let name_lower = lint_name.to_lowercase(); - let symbols = - self.get_lints().iter().map(|l| Symbol::intern(&l.name_lower())).collect::<Vec<_>>(); if lint_name.chars().any(char::is_uppercase) && self.find_lints(&name_lower).is_ok() { // First check if the lint name is (partly) in upper case instead of lower case... - CheckLintNameResult::NoLint(Some(Symbol::intern(&name_lower))) - } else { - // ...if not, search for lints with a similar name - let suggestion = find_best_match_for_name(&symbols, Symbol::intern(&name_lower), None); - CheckLintNameResult::NoLint(suggestion) + return CheckLintNameResult::NoLint(Some(Symbol::intern(&name_lower))); } + // ...if not, search for lints with a similar name + let groups = self.lint_groups.keys().copied().map(Symbol::intern); + let lints = self.lints.iter().map(|l| Symbol::intern(&l.name_lower())); + let names: Vec<Symbol> = groups.chain(lints).collect(); + let suggestion = find_best_match_for_name(&names, Symbol::intern(&name_lower), None); + CheckLintNameResult::NoLint(suggestion) } fn check_tool_name_for_backwards_compat( diff --git a/src/test/rustdoc-ui/unknown-renamed-lints.stderr b/src/test/rustdoc-ui/unknown-renamed-lints.stderr index ad814b82352..b105f47d751 100644 --- a/src/test/rustdoc-ui/unknown-renamed-lints.stderr +++ b/src/test/rustdoc-ui/unknown-renamed-lints.stderr @@ -14,7 +14,7 @@ error: unknown lint: `rustdoc::x` --> $DIR/unknown-renamed-lints.rs:7:9 | LL | #![deny(rustdoc::x)] - | ^^^^^^^^^^ + | ^^^^^^^^^^ help: did you mean: `rustdoc::all` error: lint `intra_doc_link_resolution_failure` has been renamed to `rustdoc::broken_intra_doc_links` --> $DIR/unknown-renamed-lints.rs:9:9 diff --git a/src/test/ui/lint/lint-unknown-lint.rs b/src/test/ui/lint/lint-unknown-lint.rs index c36a8b2a4bf..2d842d51420 100644 --- a/src/test/ui/lint/lint-unknown-lint.rs +++ b/src/test/ui/lint/lint-unknown-lint.rs @@ -6,4 +6,8 @@ //~| HELP did you mean //~| SUGGESTION dead_code +#![deny(rust_2018_idiots)] //~ ERROR unknown lint + //~| HELP did you mean + //~| SUGGESTION rust_2018_idioms + fn main() {} diff --git a/src/test/ui/lint/lint-unknown-lint.stderr b/src/test/ui/lint/lint-unknown-lint.stderr index 3a102769e85..0cb6b49578c 100644 --- a/src/test/ui/lint/lint-unknown-lint.stderr +++ b/src/test/ui/lint/lint-unknown-lint.stderr @@ -16,5 +16,11 @@ error: unknown lint: `dead_cod` LL | #![deny(dead_cod)] | ^^^^^^^^ help: did you mean: `dead_code` -error: aborting due to 2 previous errors +error: unknown lint: `rust_2018_idiots` + --> $DIR/lint-unknown-lint.rs:9:9 + | +LL | #![deny(rust_2018_idiots)] + | ^^^^^^^^^^^^^^^^ help: did you mean: `rust_2018_idioms` + +error: aborting due to 3 previous errors |
