about summary refs log tree commit diff
diff options
context:
space:
mode:
authorNadrieril <nadrieril+git@gmail.com>2019-12-04 16:26:30 +0000
committerNadrieril <nadrieril+git@gmail.com>2019-12-04 16:43:25 +0000
commitfe5d84d2aada20f6dd5798725eb5f203344403d9 (patch)
tree92ef048e248141133181677c03d7ee6dd57b80c5
parenta591ede2e21807f23013fde9d63ee0af04d6faf3 (diff)
downloadrust-fe5d84d2aada20f6dd5798725eb5f203344403d9.tar.gz
rust-fe5d84d2aada20f6dd5798725eb5f203344403d9.zip
Simplify
-rw-r--r--src/librustc_mir/hair/pattern/_match.rs2
-rw-r--r--src/librustc_mir/hair/pattern/check_match.rs29
2 files changed, 13 insertions, 18 deletions
diff --git a/src/librustc_mir/hair/pattern/_match.rs b/src/librustc_mir/hair/pattern/_match.rs
index 4b451ad81c3..81969bc6931 100644
--- a/src/librustc_mir/hair/pattern/_match.rs
+++ b/src/librustc_mir/hair/pattern/_match.rs
@@ -354,7 +354,7 @@ impl PatternFolder<'tcx> for LiteralExpander<'tcx> {
 }
 
 impl<'tcx> Pat<'tcx> {
-    fn is_wildcard(&self) -> bool {
+    pub(super) fn is_wildcard(&self) -> bool {
         match *self.kind {
             PatKind::Binding { subpattern: None, .. } | PatKind::Wild => true,
             _ => false,
diff --git a/src/librustc_mir/hair/pattern/check_match.rs b/src/librustc_mir/hair/pattern/check_match.rs
index fc14506f305..8156cfe7ab5 100644
--- a/src/librustc_mir/hair/pattern/check_match.rs
+++ b/src/librustc_mir/hair/pattern/check_match.rs
@@ -466,34 +466,29 @@ fn check_exhaustive<'p, 'tcx>(
     };
     // In the case of an empty match, replace the '`_` not covered' diagnostic with something more
     // informative.
+    let mut err;
     if is_empty_match && !non_empty_enum {
-        let mut err = create_e0004(
+        err = create_e0004(
             cx.tcx.sess,
             sp,
             format!("non-exhaustive patterns: type `{}` is non-empty", scrut_ty),
         );
-        err.help(
-            "ensure that all possible cases are being handled, \
-             possibly by adding wildcards or more match arms",
+    } else {
+        let joined_patterns = joined_uncovered_patterns(&witnesses);
+        err = create_e0004(
+            cx.tcx.sess,
+            sp,
+            format!("non-exhaustive patterns: {} not covered", joined_patterns),
         );
-        adt_defined_here(cx, &mut err, scrut_ty, &[]);
-        err.emit();
-        return;
-    }
+        err.span_label(sp, pattern_not_covered_label(&witnesses, &joined_patterns));
+    };
 
-    let joined_patterns = joined_uncovered_patterns(&witnesses);
-    let mut err = create_e0004(
-        cx.tcx.sess,
-        sp,
-        format!("non-exhaustive patterns: {} not covered", joined_patterns),
-    );
-    err.span_label(sp, pattern_not_covered_label(&witnesses, &joined_patterns));
     adt_defined_here(cx, &mut err, scrut_ty, &witnesses);
     err.help(
         "ensure that all possible cases are being handled, \
          possibly by adding wildcards or more match arms",
-    )
-    .emit();
+    );
+    err.emit();
 }
 
 fn joined_uncovered_patterns(witnesses: &[super::Pat<'_>]) -> String {