Auto merge of #24683 - P1start:help-suggestions, r=nrc
This PR uses the inline error suggestions introduced in #24242 to modify a few existing `help` messages. The new errors look like this: foobar.rs:5:12: 5:25 error: expected a path on the left-hand side of `+`, not `&'static Copy` [E0178] foobar.rs:5 let x: &'static Copy + 'static; ^~~~~~~~~~~~~ foobar.rs:5:12: 5:35 help: try adding parentheses (per RFC 438): foobar.rs: let x: &'static (Copy + 'static); foobar.rs:2:13: 2:23 error: cast to unsized type: `&_` as `core::marker::Copy` foobar.rs:2 let x = &1 as Copy; ^~~~~~~~~~ foobar.rs:2:19: 2:23 help: try casting to a reference instead: foobar.rs: let x = &1 as &Copy; foobar.rs:7:24: 7:25 error: expected expression, found `;` foobar.rs:7 let x = box (1 + 1); ^ foobar.rs:7:13: 7:16 help: try using `box()` instead: foobar.rs: let x = box() (1 + 1); This also modifies compiletest to give the ability to directly test suggestions given by error messages.
This commit is contained in:
commit
6b29a7d564
10 changed files with 113 additions and 25 deletions
|
@ -978,6 +978,9 @@ impl<'a> Parser<'a> {
|
|||
pub fn span_help(&self, sp: Span, m: &str) {
|
||||
self.sess.span_diagnostic.span_help(sp, m)
|
||||
}
|
||||
pub fn span_suggestion(&self, sp: Span, m: &str, n: String) {
|
||||
self.sess.span_diagnostic.span_suggestion(sp, m, n)
|
||||
}
|
||||
pub fn fileline_help(&self, sp: Span, m: &str) {
|
||||
self.sess.span_diagnostic.fileline_help(sp, m)
|
||||
}
|
||||
|
@ -2600,6 +2603,7 @@ impl<'a> Parser<'a> {
|
|||
}
|
||||
|
||||
let lo = self.span.lo;
|
||||
let box_hi = self.span.hi;
|
||||
|
||||
try!(self.bump());
|
||||
|
||||
|
@ -2616,9 +2620,10 @@ impl<'a> Parser<'a> {
|
|||
self.span_err(span,
|
||||
&format!("expected expression, found `{}`",
|
||||
this_token_to_string));
|
||||
let box_span = mk_sp(lo, self.last_span.hi);
|
||||
self.span_help(box_span,
|
||||
"perhaps you meant `box() (foo)` instead?");
|
||||
let box_span = mk_sp(lo, box_hi);
|
||||
self.span_suggestion(box_span,
|
||||
"try using `box()` instead:",
|
||||
"box()".to_string());
|
||||
self.abort_if_errors();
|
||||
}
|
||||
let subexpression = try!(self.parse_prefix_expr());
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue