diff options
| author | laurent <laurent.mazare@gmail.com> | 2017-10-31 19:45:12 +0000 |
|---|---|---|
| committer | laurent <laurent.mazare@gmail.com> | 2017-10-31 19:45:12 +0000 |
| commit | 6d060bd49a2a518d44deb36aadf772cc6ae61fb8 (patch) | |
| tree | 00a89b77758d94e9cef3611e1414fa56de63e84c /src/libsyntax/parse/parser.rs | |
| parent | 6a62ea682878e9f9e889c44a42f57a7eb1822e0d (diff) | |
| download | rust-6d060bd49a2a518d44deb36aadf772cc6ae61fb8.tar.gz rust-6d060bd49a2a518d44deb36aadf772cc6ae61fb8.zip | |
Fix spans and error messages.
Diffstat (limited to 'src/libsyntax/parse/parser.rs')
| -rw-r--r-- | src/libsyntax/parse/parser.rs | 19 |
1 files changed, 6 insertions, 13 deletions
diff --git a/src/libsyntax/parse/parser.rs b/src/libsyntax/parse/parser.rs index 37a12801ddc..ffa6567c18b 100644 --- a/src/libsyntax/parse/parser.rs +++ b/src/libsyntax/parse/parser.rs @@ -3174,23 +3174,16 @@ impl<'a> Parser<'a> { mem::replace(self, parser_snapshot_before_in); match self.parse_expr_res(Restrictions::NO_STRUCT_LITERAL, None) { - Ok(expr) => { - // Successfully parsed the expr, print a nice error message. + Ok(_) => { + // Successfully parsed the expr which means that the 'in' keyword is + // missing, e.g. 'for i 0..2' in_err.cancel(); - let in_span = parser_snapshot_after_in.span; + let in_span = parser_snapshot_after_in.prev_span + .between(parser_snapshot_after_in.span); let mut err = self.sess.span_diagnostic .struct_span_err(in_span, "missing `in` in `for` loop"); err.span_label(in_span, "expected `in` here"); - let sugg = pprust::to_string(|s| { - s.s.word("for ")?; - s.print_pat(&pat)?; - s.s.word(" in ")?; - s.print_expr(&expr) - }); - err.span_suggestion( - in_span, - "try adding `in`", - sugg); + err.span_suggestion_short(in_span, "try adding `in` here", "in".into()); Err(err) } Err(mut expr_err) => { |
