diff options
| author | Yuki Okushi <huyuumi.dev@gmail.com> | 2020-11-07 01:02:05 +0900 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-11-07 01:02:05 +0900 |
| commit | 91153d5009d110e70768e3665212a880658a79ec (patch) | |
| tree | 3b633420ae15ce258b9db4e2ba5a80def0ea5070 /src/test/ui | |
| parent | 0e71fc75ccfe577033345dcc478e98503d71831f (diff) | |
| parent | 107a29a90146ac418c71f306691cd4857ce15c03 (diff) | |
| download | rust-91153d5009d110e70768e3665212a880658a79ec.tar.gz rust-91153d5009d110e70768e3665212a880658a79ec.zip | |
Rollup merge of #78167 - Nadrieril:fix-76836_, r=varkor
Fix unreachable sub-branch detection in or-patterns The previous implementation was too eager to avoid unnecessary "unreachable pattern" warnings. I feel more confident about this implementation than I felt about the previous one. Fixes https://github.com/rust-lang/rust/issues/76836. ``@rustbot`` modify labels: +A-exhaustiveness-checking
Diffstat (limited to 'src/test/ui')
| -rw-r--r-- | src/test/ui/or-patterns/exhaustiveness-unreachable-pattern.rs | 11 | ||||
| -rw-r--r-- | src/test/ui/or-patterns/exhaustiveness-unreachable-pattern.stderr | 12 |
2 files changed, 18 insertions, 5 deletions
diff --git a/src/test/ui/or-patterns/exhaustiveness-unreachable-pattern.rs b/src/test/ui/or-patterns/exhaustiveness-unreachable-pattern.rs index a1147cb5cfc..512f1e283cb 100644 --- a/src/test/ui/or-patterns/exhaustiveness-unreachable-pattern.rs +++ b/src/test/ui/or-patterns/exhaustiveness-unreachable-pattern.rs @@ -77,10 +77,17 @@ fn main() { (false | true, false | true) => {} } match (true, true) { - (true, false) => {} - (false, true) => {} + (true, true) => {} + (false, false) => {} (false | true, false | true) => {} } + // https://github.com/rust-lang/rust/issues/76836 + match None { + Some(false) => {} + None | Some(true + | false) => {} //~ ERROR unreachable + } + // A subpattern that is unreachable in all branches is overall unreachable. match (true, true) { (false, true) => {} diff --git a/src/test/ui/or-patterns/exhaustiveness-unreachable-pattern.stderr b/src/test/ui/or-patterns/exhaustiveness-unreachable-pattern.stderr index d92b545a869..e968310d108 100644 --- a/src/test/ui/or-patterns/exhaustiveness-unreachable-pattern.stderr +++ b/src/test/ui/or-patterns/exhaustiveness-unreachable-pattern.stderr @@ -101,16 +101,22 @@ LL | Some(0 | ^ error: unreachable pattern - --> $DIR/exhaustiveness-unreachable-pattern.rs:89:15 + --> $DIR/exhaustiveness-unreachable-pattern.rs:88:19 + | +LL | | false) => {} + | ^^^^^ + +error: unreachable pattern + --> $DIR/exhaustiveness-unreachable-pattern.rs:96:15 | LL | | true) => {} | ^^^^ error: unreachable pattern - --> $DIR/exhaustiveness-unreachable-pattern.rs:95:15 + --> $DIR/exhaustiveness-unreachable-pattern.rs:102:15 | LL | | true, | ^^^^ -error: aborting due to 18 previous errors +error: aborting due to 19 previous errors |
