This commit is contained in:
Nadrieril 2019-12-04 16:26:30 +00:00
parent a591ede2e2
commit fe5d84d2aa
2 changed files with 13 additions and 18 deletions

View file

@ -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,

View file

@ -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 {