used_underscore_bindings: respect lint levels on the binding definition

This commit is contained in:
Alex Macleod 2023-09-17 14:33:06 +00:00
parent 251a475b72
commit 32d3387c80
4 changed files with 140 additions and 66 deletions

View file

@ -1,6 +1,5 @@
//@aux-build:proc_macro_derive.rs
#![feature(rustc_private)]
#![warn(clippy::all)]
#![feature(rustc_private, lint_reasons)]
#![warn(clippy::used_underscore_binding)]
#![allow(clippy::disallowed_names, clippy::eq_op, clippy::uninlined_format_args)]
@ -107,6 +106,31 @@ async fn await_desugaring() {
.await
}
struct PhantomField<T> {
_marker: std::marker::PhantomData<T>,
}
impl<T> std::fmt::Debug for PhantomField<T> {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
f.debug_struct("PhantomField").field("_marker", &self._marker).finish()
}
}
struct AllowedField {
#[allow(clippy::used_underscore_binding)]
_allowed: usize,
}
struct ExpectedField {
#[expect(clippy::used_underscore_binding)]
_expected: usize,
}
fn lint_levels(allowed: AllowedField, expected: ExpectedField) {
let _ = allowed._allowed;
let _ = expected._expected;
}
fn main() {
let foo = 0u32;
// tests of unused_underscore lint

View file

@ -1,41 +1,76 @@
error: used binding `_foo` which is prefixed with an underscore. A leading underscore signals that a binding will not be used
--> $DIR/used_underscore_binding.rs:24:5
--> $DIR/used_underscore_binding.rs:23:5
|
LL | _foo + 1
| ^^^^
|
note: `_foo` is defined here
--> $DIR/used_underscore_binding.rs:22:22
|
LL | fn prefix_underscore(_foo: u32) -> u32 {
| ^^^^
= note: `-D clippy::used-underscore-binding` implied by `-D warnings`
= help: to override `-D warnings` add `#[allow(clippy::used_underscore_binding)]`
error: used binding `_foo` which is prefixed with an underscore. A leading underscore signals that a binding will not be used
--> $DIR/used_underscore_binding.rs:29:20
--> $DIR/used_underscore_binding.rs:28:20
|
LL | println!("{}", _foo);
| ^^^^
|
note: `_foo` is defined here
--> $DIR/used_underscore_binding.rs:27:24
|
LL | fn in_macro_or_desugar(_foo: u32) {
| ^^^^
error: used binding `_foo` which is prefixed with an underscore. A leading underscore signals that a binding will not be used
--> $DIR/used_underscore_binding.rs:30:16
--> $DIR/used_underscore_binding.rs:29:16
|
LL | assert_eq!(_foo, _foo);
| ^^^^
|
note: `_foo` is defined here
--> $DIR/used_underscore_binding.rs:27:24
|
LL | fn in_macro_or_desugar(_foo: u32) {
| ^^^^
error: used binding `_foo` which is prefixed with an underscore. A leading underscore signals that a binding will not be used
--> $DIR/used_underscore_binding.rs:30:22
--> $DIR/used_underscore_binding.rs:29:22
|
LL | assert_eq!(_foo, _foo);
| ^^^^
|
note: `_foo` is defined here
--> $DIR/used_underscore_binding.rs:27:24
|
LL | fn in_macro_or_desugar(_foo: u32) {
| ^^^^
error: used binding `_underscore_field` which is prefixed with an underscore. A leading underscore signals that a binding will not be used
--> $DIR/used_underscore_binding.rs:43:5
--> $DIR/used_underscore_binding.rs:42:5
|
LL | s._underscore_field += 1;
| ^^^^^^^^^^^^^^^^^^^
|
note: `_underscore_field` is defined here
--> $DIR/used_underscore_binding.rs:36:5
|
LL | _underscore_field: u32,
| ^^^^^^^^^^^^^^^^^^^^^^
error: used binding `_i` which is prefixed with an underscore. A leading underscore signals that a binding will not be used
--> $DIR/used_underscore_binding.rs:104:16
--> $DIR/used_underscore_binding.rs:103:16
|
LL | uses_i(_i);
| ^^
|
note: `_i` is defined here
--> $DIR/used_underscore_binding.rs:102:13
|
LL | let _i = 5;
| ^^
error: aborting due to 6 previous errors