Skip to content

Commit

Permalink
Auto merge of #84959 - camsteffen:lint-suggest-group, r=estebank
Browse files Browse the repository at this point in the history
Suggest lint groups

Fixes rust-lang/rust-clippy#6986
  • Loading branch information
bors committed Jul 20, 2021
2 parents 6535449 + 25c66a1 commit c9aa259
Show file tree
Hide file tree
Showing 4 changed files with 19 additions and 9 deletions.
14 changes: 7 additions & 7 deletions compiler/rustc_lint/src/context.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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(
Expand Down
2 changes: 1 addition & 1 deletion src/test/rustdoc-ui/unknown-renamed-lints.stderr
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
4 changes: 4 additions & 0 deletions src/test/ui/lint/lint-unknown-lint.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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() {}
8 changes: 7 additions & 1 deletion src/test/ui/lint/lint-unknown-lint.stderr
Original file line number Diff line number Diff line change
Expand Up @@ -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

0 comments on commit c9aa259

Please sign in to comment.