Give better help for identifier patterns failing exhaustiveness check

This commit is contained in:
Vadim Petrochenkov 2017-11-04 03:06:01 +03:00
parent 3386757923
commit 765076faab
2 changed files with 11 additions and 4 deletions

View file

@ -260,7 +260,14 @@ impl<'a, 'tcx> MatchVisitor<'a, 'tcx> {
"refutable pattern in {}: `{}` not covered",
origin, pattern_string
);
diag.span_label(pat.span, format!("pattern `{}` not covered", pattern_string));
let label_msg = match pat.node {
PatKind::Path(hir::QPath::Resolved(None, ref path))
if path.segments.len() == 1 && path.segments[0].parameters.is_none() => {
format!("interpreted as a {} pattern, not new variable", path.def.kind_name())
}
_ => format!("pattern `{}` not covered", pattern_string),
};
diag.span_label(pat.span, label_msg);
diag.emit();
});
}

View file

@ -2,19 +2,19 @@ error[E0005]: refutable pattern in local binding: `_` not covered
--> $DIR/const-pattern-irrefutable.rs:22:9
|
22 | let a = 4; //~ ERROR refutable pattern in local binding: `_` not covered
| ^ pattern `_` not covered
| ^ interpreted as a constant pattern, not new variable
error[E0005]: refutable pattern in local binding: `_` not covered
--> $DIR/const-pattern-irrefutable.rs:23:9
|
23 | let c = 4; //~ ERROR refutable pattern in local binding: `_` not covered
| ^ pattern `_` not covered
| ^ interpreted as a constant pattern, not new variable
error[E0005]: refutable pattern in local binding: `_` not covered
--> $DIR/const-pattern-irrefutable.rs:24:9
|
24 | let d = 4; //~ ERROR refutable pattern in local binding: `_` not covered
| ^ pattern `_` not covered
| ^ interpreted as a constant pattern, not new variable
error: aborting due to 3 previous errors