mirror of
https://github.com/rust-lang/rust.git
synced 2025-06-04 19:29:07 +00:00
Auto merge of #44104 - llogiq:lowercase-lints, r=nikomatsakis
add a lowercase suggestion to unknown_lints
I recently wrote some tests for a clippy lint, copied the (uppercase) lint name into my test file and forgot to toggle the case. This PR adds a suggestion that would have saved me 10 minutes of debugging, so it's likely a net win 🙂 . Also it adds a UI test for the `unknown_lints` lint.
This commit is contained in:
commit
efceda220e
@ -247,13 +247,27 @@ impl<'a> LintLevelsBuilder<'a> {
|
|||||||
self.cur,
|
self.cur,
|
||||||
Some(&specs));
|
Some(&specs));
|
||||||
let msg = format!("unknown lint: `{}`", name);
|
let msg = format!("unknown lint: `{}`", name);
|
||||||
lint::struct_lint_level(self.sess,
|
let mut db = lint::struct_lint_level(self.sess,
|
||||||
lint,
|
lint,
|
||||||
level,
|
level,
|
||||||
src,
|
src,
|
||||||
Some(li.span.into()),
|
Some(li.span.into()),
|
||||||
&msg)
|
&msg);
|
||||||
.emit();
|
if name.as_str().chars().any(|c| c.is_uppercase()) {
|
||||||
|
let name_lower = name.as_str().to_lowercase();
|
||||||
|
if let CheckLintNameResult::NoLint =
|
||||||
|
store.check_lint_name(&name_lower) {
|
||||||
|
db.emit();
|
||||||
|
} else {
|
||||||
|
db.span_suggestion(
|
||||||
|
li.span,
|
||||||
|
"lowercase the lint name",
|
||||||
|
name_lower
|
||||||
|
).emit();
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
db.emit();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
21
src/test/ui/lint/not_found.rs
Normal file
21
src/test/ui/lint/not_found.rs
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
// Copyright 2014–2017 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.
|
||||||
|
|
||||||
|
// this tests the `unknown_lint` lint, especially the suggestions
|
||||||
|
|
||||||
|
// the suggestion only appears if a lint with the lowercase name exists
|
||||||
|
#[allow(FOO_BAR)]
|
||||||
|
// the suggestion appears on all-uppercase names
|
||||||
|
#[warn(DEAD_CODE)]
|
||||||
|
// the suggestion appears also on mixed-case names
|
||||||
|
#[deny(Warnings)]
|
||||||
|
fn main() {
|
||||||
|
unimplemented!();
|
||||||
|
}
|
20
src/test/ui/lint/not_found.stderr
Normal file
20
src/test/ui/lint/not_found.stderr
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
warning: unknown lint: `FOO_BAR`
|
||||||
|
--> $DIR/not_found.rs:14:9
|
||||||
|
|
|
||||||
|
14 | #[allow(FOO_BAR)]
|
||||||
|
| ^^^^^^^
|
||||||
|
|
|
||||||
|
= note: #[warn(unknown_lints)] on by default
|
||||||
|
|
||||||
|
warning: unknown lint: `DEAD_CODE`
|
||||||
|
--> $DIR/not_found.rs:16:8
|
||||||
|
|
|
||||||
|
16 | #[warn(DEAD_CODE)]
|
||||||
|
| ^^^^^^^^^ help: lowercase the lint name: `dead_code`
|
||||||
|
|
||||||
|
warning: unknown lint: `Warnings`
|
||||||
|
--> $DIR/not_found.rs:18:8
|
||||||
|
|
|
||||||
|
18 | #[deny(Warnings)]
|
||||||
|
| ^^^^^^^^ help: lowercase the lint name: `warnings`
|
||||||
|
|
Loading…
Reference in New Issue
Block a user