Skip to content

Commit

Permalink
Give better help for identifier patterns failing exhaustiveness check
Browse files Browse the repository at this point in the history
  • Loading branch information
petrochenkov committed Nov 4, 2017
1 parent 3386757 commit 765076f
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 4 deletions.
9 changes: 8 additions & 1 deletion src/librustc_const_eval/check_match.rs
Expand Up @@ -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();
});
}
Expand Down
6 changes: 3 additions & 3 deletions src/test/ui/const-pattern-irrefutable.stderr
Expand Up @@ -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

0 comments on commit 765076f

Please sign in to comment.