mirror of
https://github.com/rust-lang/rust-clippy
synced 2024-11-27 15:11:30 +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)]
|
#![feature(exhaustive_patterns, never_type)]
|
||||||
|
#![allow(dead_code, unreachable_code, unused_variables)]
|
||||||
#![allow(clippy::let_and_return)]
|
#![allow(clippy::let_and_return)]
|
||||||
|
|
||||||
enum SingleVariantEnum {
|
enum SingleVariantEnum {
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
error: you seem to be trying to use match to destructure a single infallible pattern. Consider using `let`
|
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 | / let data = match wrapper {
|
||||||
LL | | SingleVariantEnum::Variant(i) => i,
|
LL | | SingleVariantEnum::Variant(i) => i,
|
||||||
|
@ -9,7 +9,7 @@ LL | | };
|
||||||
= note: `-D clippy::infallible-destructuring-match` implied by `-D warnings`
|
= 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`
|
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 | / let data = match wrapper {
|
||||||
LL | | TupleStruct(i) => i,
|
LL | | TupleStruct(i) => i,
|
||||||
|
@ -17,7 +17,7 @@ LL | | };
|
||||||
| |______^ help: try this: `let TupleStruct(data) = wrapper;`
|
| |______^ 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`
|
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 | / let data = match wrapper {
|
||||||
LL | | Ok(i) => i,
|
LL | | Ok(i) => i,
|
||||||
|
|
Loading…
Reference in a new issue