Rollup merge of #39420 - oli-obk:sugg, r=pnkfelix

parser: use suggestions instead of helps with code in them
This commit is contained in:
Guillaume Gomez 2017-02-02 22:22:29 +01:00 committed by GitHub
commit a561ad831d
4 changed files with 27 additions and 8 deletions

View File

@ -8,8 +8,6 @@
// option. This file may not be copied, modified, or distributed
// except according to those terms.
//#![allow(non_camel_case_types)]
use rustc::middle::const_val::ConstVal::*;
use rustc::middle::const_val::ConstVal;
use self::ErrKind::*;

View File

@ -2456,9 +2456,21 @@ fn parse_dot_or_call_expr_with_(&mut self, e0: P<Expr>, lo: BytePos) -> PResult<
Some(f) => f,
None => continue,
};
err.help(&format!("try parenthesizing the first index; e.g., `(foo.{}){}`",
float.trunc() as usize,
format!(".{}", fstr.splitn(2, ".").last().unwrap())));
let sugg = pprust::to_string(|s| {
use print::pprust::PrintState;
use print::pp::word;
s.popen()?;
s.print_expr(&e)?;
word(&mut s.s, ".")?;
s.print_usize(float.trunc() as usize)?;
s.pclose()?;
word(&mut s.s, ".")?;
word(&mut s.s, fstr.splitn(2, ".").last().unwrap())
});
err.span_suggestion(
prev_span,
"try parenthesizing the first index",
sugg);
}
return Err(err);
@ -3900,7 +3912,14 @@ pub fn parse_block(&mut self) -> PResult<'a, P<Block>> {
if self.eat(&token::Semi) {
stmt_span.hi = self.prev_span.hi;
}
e.span_help(stmt_span, "try placing this code inside a block");
let sugg = pprust::to_string(|s| {
use print::pprust::{PrintState, INDENT_UNIT};
s.ibox(INDENT_UNIT)?;
s.bopen()?;
s.print_stmt(&stmt)?;
s.bclose_maybe_open(stmt.span, INDENT_UNIT, false)
});
e.span_suggestion(stmt_span, "try placing this code inside a block", sugg);
}
Err(mut e) => {
self.recover_stmt_(SemiColonMode::Break);

View File

@ -15,6 +15,7 @@ fn main() {
{
if (foo)
bar; //~ ERROR expected `{`, found `bar`
//^ HELP try placing this code inside a block
//~^ HELP try placing this code inside a block
//~| SUGGESTION { bar; }
}
}

View File

@ -12,5 +12,6 @@
fn main () {
(1, (2, 3)).1.1; //~ ERROR unexpected token
//~^ HELP try parenthesizing the first index; e.g., `(foo.1).1`
//~^ HELP try parenthesizing the first index
//~| SUGGESTION ((1, (2, 3)).1).1
}