Exhaustiveness checking, Matrix::push: recursively expand or-patterns by Centril · Pull Request #69891 · rust-lang/rust (original) (raw)

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service andprivacy statement. We’ll occasionally send you account related emails.

Already on GitHub?Sign in to your account

Conversation6 Commits1 Checks0 Files changed

Conversation

This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.Learn more about bidirectional Unicode characters

[ Show hidden characters]({{ revealButtonHref }})

Centril

There's an implicit invariant that there should be no or-patterns directly in the first column of the matrix, but this invariant is broken exactly when an or-pattern has a child that is itself an or-pattern.

Here we preserve this broken invariant by recursively expanding PatKind::Ors in Matrix::push.
Fixes #69875.

r? @varkor
cc @Nadrieril
cc #54883

Nadrieril

@Centril

@varkor

@bors

📌 Commit 4d16c21 has been approved by varkor

@bors

🌲 The tree is currently closed for pull requests below priority 1000, this pull request will be tested once the tree is reopened

@bors bors added S-waiting-on-bors

Status: Waiting on bors to run and complete tests. Bors will change the label on completion.

and removed S-waiting-on-review

Status: Awaiting review from the assignee but also interested parties.

labels

Mar 10, 2020

Centril added a commit to Centril/rust that referenced this pull request

Mar 11, 2020

@Centril

Exhaustiveness checking, Matrix::push: recursively expand or-patterns

There's an implicit invariant that there should be no or-patterns directly in the first column of the matrix, but this invariant is broken exactly when an or-pattern has a child that is itself an or-pattern.

Here we preserve this broken invariant by recursively expanding PatKind::Ors in Matrix::push. Fixes rust-lang#69875.

r? @varkor cc @Nadrieril cc rust-lang#54883

bors added a commit that referenced this pull request

Mar 11, 2020

@bors

Rollup of 10 pull requests

Successful merges:

Failed merges:

r? @ghost

Labels

F-or_patterns

`#![feature(or_patterns)]`

S-waiting-on-bors

Status: Waiting on bors to run and complete tests. Bors will change the label on completion.