Skip to content

Commit

Permalink
Add run-rustfix to infallible_destructuring_match
Browse files Browse the repository at this point in the history
  • Loading branch information
detrumi committed Jan 13, 2019
1 parent 87407c5 commit 787f5a2
Show file tree
Hide file tree
Showing 3 changed files with 84 additions and 3 deletions.
79 changes: 79 additions & 0 deletions tests/ui/infallible_destructuring_match.fixed
@@ -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() {}
2 changes: 2 additions & 0 deletions tests/ui/infallible_destructuring_match.rs
@@ -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 {
Expand Down
6 changes: 3 additions & 3 deletions tests/ui/infallible_destructuring_match.stderr
@@ -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,
Expand All @@ -9,15 +9,15 @@ 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,
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,
Expand Down

0 comments on commit 787f5a2

Please sign in to comment.