new lint: init-numbered-fields
This commit is contained in:
parent
547efad945
commit
3ebd2bc2e4
11 changed files with 198 additions and 7 deletions
33
tests/ui/numbered_fields.fixed
Normal file
33
tests/ui/numbered_fields.fixed
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
//run-rustfix
|
||||
#![warn(clippy::init_numbered_fields)]
|
||||
|
||||
#[derive(Default)]
|
||||
struct TupleStruct(u32, u32, u8);
|
||||
|
||||
// This shouldn't lint because it's in a macro
|
||||
macro_rules! tuple_struct_init {
|
||||
() => {
|
||||
TupleStruct { 0: 0, 1: 1, 2: 2 }
|
||||
};
|
||||
}
|
||||
|
||||
fn main() {
|
||||
let tuple_struct = TupleStruct::default();
|
||||
|
||||
// This should lint
|
||||
let _ = TupleStruct(1u32, 42, 23u8);
|
||||
|
||||
// This should also lint and order the fields correctly
|
||||
let _ = TupleStruct(1u32, 3u32, 2u8);
|
||||
|
||||
// Ok because of default initializer
|
||||
let _ = TupleStruct { 0: 42, ..tuple_struct };
|
||||
|
||||
let _ = TupleStruct {
|
||||
1: 23,
|
||||
..TupleStruct::default()
|
||||
};
|
||||
|
||||
// Ok because it's in macro
|
||||
let _ = tuple_struct_init!();
|
||||
}
|
||||
41
tests/ui/numbered_fields.rs
Normal file
41
tests/ui/numbered_fields.rs
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
//run-rustfix
|
||||
#![warn(clippy::init_numbered_fields)]
|
||||
|
||||
#[derive(Default)]
|
||||
struct TupleStruct(u32, u32, u8);
|
||||
|
||||
// This shouldn't lint because it's in a macro
|
||||
macro_rules! tuple_struct_init {
|
||||
() => {
|
||||
TupleStruct { 0: 0, 1: 1, 2: 2 }
|
||||
};
|
||||
}
|
||||
|
||||
fn main() {
|
||||
let tuple_struct = TupleStruct::default();
|
||||
|
||||
// This should lint
|
||||
let _ = TupleStruct {
|
||||
0: 1u32,
|
||||
1: 42,
|
||||
2: 23u8,
|
||||
};
|
||||
|
||||
// This should also lint and order the fields correctly
|
||||
let _ = TupleStruct {
|
||||
0: 1u32,
|
||||
2: 2u8,
|
||||
1: 3u32,
|
||||
};
|
||||
|
||||
// Ok because of default initializer
|
||||
let _ = TupleStruct { 0: 42, ..tuple_struct };
|
||||
|
||||
let _ = TupleStruct {
|
||||
1: 23,
|
||||
..TupleStruct::default()
|
||||
};
|
||||
|
||||
// Ok because it's in macro
|
||||
let _ = tuple_struct_init!();
|
||||
}
|
||||
26
tests/ui/numbered_fields.stderr
Normal file
26
tests/ui/numbered_fields.stderr
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
error: used a field initializer for a tuple struct
|
||||
--> $DIR/numbered_fields.rs:18:13
|
||||
|
|
||||
LL | let _ = TupleStruct {
|
||||
| _____________^
|
||||
LL | | 0: 1u32,
|
||||
LL | | 1: 42,
|
||||
LL | | 2: 23u8,
|
||||
LL | | };
|
||||
| |_____^ help: try this instead: `TupleStruct(1u32, 42, 23u8)`
|
||||
|
|
||||
= note: `-D clippy::init-numbered-fields` implied by `-D warnings`
|
||||
|
||||
error: used a field initializer for a tuple struct
|
||||
--> $DIR/numbered_fields.rs:25:13
|
||||
|
|
||||
LL | let _ = TupleStruct {
|
||||
| _____________^
|
||||
LL | | 0: 1u32,
|
||||
LL | | 2: 2u8,
|
||||
LL | | 1: 3u32,
|
||||
LL | | };
|
||||
| |_____^ help: try this instead: `TupleStruct(1u32, 3u32, 2u8)`
|
||||
|
||||
error: aborting due to 2 previous errors
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue