Auto merge of #30116 - petrochenkov:exhaust, r=alexcrichton

Fixes https://github.com/rust-lang/rust/pull/29383#issuecomment-160652130

r? @bluss
This commit is contained in:
bors 2015-12-01 05:55:04 +00:00
commit c212c0e1d1
2 changed files with 26 additions and 1 deletions

View File

@ -636,8 +636,11 @@ pub fn check_pat_enum<'a, 'tcx>(pcx: &pat_ctxt<'a, 'tcx>,
let report_bad_struct_kind = |is_warning| { let report_bad_struct_kind = |is_warning| {
bad_struct_kind_err(tcx.sess, pat.span, path, is_warning); bad_struct_kind_err(tcx.sess, pat.span, path, is_warning);
fcx.write_error(pat.id); if is_warning {
return
}
fcx.write_error(pat.id);
if let Some(subpats) = subpats { if let Some(subpats) = subpats {
for pat in subpats { for pat in subpats {
check_pat(pcx, &**pat, tcx.types.err); check_pat(pcx, &**pat, tcx.types.err);

View File

@ -0,0 +1,22 @@
// Copyright 2015 The Rust Project Developers. See the COPYRIGHT
// file at the top-level directory of this distribution and at
// http://rust-lang.org/COPYRIGHT.
//
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
// option. This file may not be copied, modified, or distributed
// except according to those terms.
enum E {
A,
B,
}
fn main() {
match None {
None => {}
Some(E::A(..)) => {}
Some(E::B(..)) => {}
}
}