]> git.lizzy.rs Git - rust.git/commitdiff
Fix regression in patterns with empty variants
authorVadim Petrochenkov <vadim.petrochenkov@gmail.com>
Mon, 30 Nov 2015 16:56:19 +0000 (19:56 +0300)
committerVadim Petrochenkov <vadim.petrochenkov@gmail.com>
Mon, 30 Nov 2015 16:56:19 +0000 (19:56 +0300)
src/librustc_typeck/check/_match.rs
src/test/run-pass/issue-pr29383.rs [new file with mode: 0644]

index 1053919be53fe40acb610556cc8feed39714a750..1a3812147d898aafcea2ae68ed0779c0511f70e3 100644 (file)
@@ -636,8 +636,11 @@ pub fn check_pat_enum<'a, 'tcx>(pcx: &pat_ctxt<'a, 'tcx>,
 
     let report_bad_struct_kind = |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 {
             for pat in subpats {
                 check_pat(pcx, &**pat, tcx.types.err);
diff --git a/src/test/run-pass/issue-pr29383.rs b/src/test/run-pass/issue-pr29383.rs
new file mode 100644 (file)
index 0000000..487dbdd
--- /dev/null
@@ -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(..)) => {}
+    }
+}