From: bors Date: Sat, 21 Jun 2014 02:11:22 +0000 (+0000) Subject: auto merge of #14731 : jakub-/rust/pattern-matching-refactor, r=alexcrichton X-Git-Url: https://git.lizzy.rs/?a=commitdiff_plain;h=b1646cbfd908dc948b251e362669af421100647a;p=rust.git auto merge of #14731 : jakub-/rust/pattern-matching-refactor, r=alexcrichton This PR is changing the error messages for non-exhaustive pattern matching to include a more accurate witness, i.e. a pattern that is not covered by any of the ones provided by the user. Example: ```rust fn main() { match (true, (Some("foo"), [true, true]), Some(42u)) { (false, _, _) => (), (true, (None, [true, _]), None) => (), (true, (None, [false, _]), Some(1u)) => () } } ``` ```sh /tmp/witness.rs:2:2: 6:3 error: non-exhaustive patterns: (true, (core::option::Some(_), _), _) not covered /tmp/witness.rs:2 match (true, (Some("foo"), [true, true]), Some(42u)) { /tmp/witness.rs:3 (false, _, _) => (), /tmp/witness.rs:4 (true, (None, [true, _]), None) => (), /tmp/witness.rs:5 (true, (None, [false, _]), Some(1u)) => () /tmp/witness.rs:6 } ``` As part of that, I refactored some of the relevant code and carried over the changes to fixed vectors from the previous PR. I'm putting it out there for now but the tests will be red. --- b1646cbfd908dc948b251e362669af421100647a