diff options
| author | Nadrieril <nadrieril+git@gmail.com> | 2019-12-04 16:26:30 +0000 |
|---|---|---|
| committer | Nadrieril <nadrieril+git@gmail.com> | 2019-12-04 16:43:25 +0000 |
| commit | fe5d84d2aada20f6dd5798725eb5f203344403d9 (patch) | |
| tree | 92ef048e248141133181677c03d7ee6dd57b80c5 | |
| parent | a591ede2e21807f23013fde9d63ee0af04d6faf3 (diff) | |
| download | rust-fe5d84d2aada20f6dd5798725eb5f203344403d9.tar.gz rust-fe5d84d2aada20f6dd5798725eb5f203344403d9.zip | |
Simplify
| -rw-r--r-- | src/librustc_mir/hair/pattern/_match.rs | 2 | ||||
| -rw-r--r-- | src/librustc_mir/hair/pattern/check_match.rs | 29 |
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 { |
