mirror of
https://github.com/rust-lang/rust-clippy
synced 2024-11-23 13:13:34 +00:00
Add run-rustfix to infallible_destructuring_match
This commit is contained in:
parent
87407c5e5f
commit
787f5a2c12
3 changed files with 84 additions and 3 deletions
79
tests/ui/infallible_destructuring_match.fixed
Normal file
79
tests/ui/infallible_destructuring_match.fixed
Normal file
|
@ -0,0 +1,79 @@
|
|||
// run-rustfix
|
||||
#![feature(exhaustive_patterns, never_type)]
|
||||
#![allow(dead_code, unreachable_code, unused_variables)]
|
||||
#![allow(clippy::let_and_return)]
|
||||
|
||||
enum SingleVariantEnum {
|
||||
Variant(i32),
|
||||
}
|
||||
|
||||
struct TupleStruct(i32);
|
||||
|
||||
enum EmptyEnum {}
|
||||
|
||||
fn infallible_destructuring_match_enum() {
|
||||
let wrapper = SingleVariantEnum::Variant(0);
|
||||
|
||||
// This should lint!
|
||||
let SingleVariantEnum::Variant(data) = wrapper;
|
||||
|
||||
// This shouldn't!
|
||||
let data = match wrapper {
|
||||
SingleVariantEnum::Variant(_) => -1,
|
||||
};
|
||||
|
||||
// Neither should this!
|
||||
let data = match wrapper {
|
||||
SingleVariantEnum::Variant(i) => -1,
|
||||
};
|
||||
|
||||
let SingleVariantEnum::Variant(data) = wrapper;
|
||||
}
|
||||
|
||||
fn infallible_destructuring_match_struct() {
|
||||
let wrapper = TupleStruct(0);
|
||||
|
||||
// This should lint!
|
||||
let TupleStruct(data) = wrapper;
|
||||
|
||||
// This shouldn't!
|
||||
let data = match wrapper {
|
||||
TupleStruct(_) => -1,
|
||||
};
|
||||
|
||||
// Neither should this!
|
||||
let data = match wrapper {
|
||||
TupleStruct(i) => -1,
|
||||
};
|
||||
|
||||
let TupleStruct(data) = wrapper;
|
||||
}
|
||||
|
||||
fn never_enum() {
|
||||
let wrapper: Result<i32, !> = Ok(23);
|
||||
|
||||
// This should lint!
|
||||
let Ok(data) = wrapper;
|
||||
|
||||
// This shouldn't!
|
||||
let data = match wrapper {
|
||||
Ok(_) => -1,
|
||||
};
|
||||
|
||||
// Neither should this!
|
||||
let data = match wrapper {
|
||||
Ok(i) => -1,
|
||||
};
|
||||
|
||||
let Ok(data) = wrapper;
|
||||
}
|
||||
|
||||
impl EmptyEnum {
|
||||
fn match_on(&self) -> ! {
|
||||
// The lint shouldn't pick this up, as `let` won't work here!
|
||||
let data = match *self {};
|
||||
data
|
||||
}
|
||||
}
|
||||
|
||||
fn main() {}
|
|
@ -1,4 +1,6 @@
|
|||
// run-rustfix
|
||||
#![feature(exhaustive_patterns, never_type)]
|
||||
#![allow(dead_code, unreachable_code, unused_variables)]
|
||||
#![allow(clippy::let_and_return)]
|
||||
|
||||
enum SingleVariantEnum {
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
error: you seem to be trying to use match to destructure a single infallible pattern. Consider using `let`
|
||||
--> $DIR/infallible_destructuring_match.rs:16:5
|
||||
--> $DIR/infallible_destructuring_match.rs:18:5
|
||||
|
|
||||
LL | / let data = match wrapper {
|
||||
LL | | SingleVariantEnum::Variant(i) => i,
|
||||
|
@ -9,7 +9,7 @@ LL | | };
|
|||
= note: `-D clippy::infallible-destructuring-match` implied by `-D warnings`
|
||||
|
||||
error: you seem to be trying to use match to destructure a single infallible pattern. Consider using `let`
|
||||
--> $DIR/infallible_destructuring_match.rs:37:5
|
||||
--> $DIR/infallible_destructuring_match.rs:39:5
|
||||
|
|
||||
LL | / let data = match wrapper {
|
||||
LL | | TupleStruct(i) => i,
|
||||
|
@ -17,7 +17,7 @@ LL | | };
|
|||
| |______^ help: try this: `let TupleStruct(data) = wrapper;`
|
||||
|
||||
error: you seem to be trying to use match to destructure a single infallible pattern. Consider using `let`
|
||||
--> $DIR/infallible_destructuring_match.rs:58:5
|
||||
--> $DIR/infallible_destructuring_match.rs:60:5
|
||||
|
|
||||
LL | / let data = match wrapper {
|
||||
LL | | Ok(i) => i,
|
||||
|
|
Loading…
Reference in a new issue