Adddressed #51602
This commit is contained in:
parent
23f09bbed4
commit
b70be5bc79
3 changed files with 32 additions and 1 deletions
|
@ -4719,7 +4719,12 @@ impl<'a> Parser<'a> {
|
||||||
if !self.eat(&token::OpenDelim(token::Brace)) {
|
if !self.eat(&token::OpenDelim(token::Brace)) {
|
||||||
let sp = self.span;
|
let sp = self.span;
|
||||||
let tok = self.this_token_to_string();
|
let tok = self.this_token_to_string();
|
||||||
|
let mut do_not_suggest_help = false;
|
||||||
let mut e = self.span_fatal(sp, &format!("expected `{{`, found `{}`", tok));
|
let mut e = self.span_fatal(sp, &format!("expected `{{`, found `{}`", tok));
|
||||||
|
if self.token.is_keyword(keywords::In) || self.token == token::Colon {
|
||||||
|
do_not_suggest_help = true;
|
||||||
|
e.span_label(sp, "expected `{`");
|
||||||
|
}
|
||||||
|
|
||||||
// Check to see if the user has written something like
|
// Check to see if the user has written something like
|
||||||
//
|
//
|
||||||
|
@ -4729,7 +4734,8 @@ impl<'a> Parser<'a> {
|
||||||
// Which is valid in other languages, but not Rust.
|
// Which is valid in other languages, but not Rust.
|
||||||
match self.parse_stmt_without_recovery(false) {
|
match self.parse_stmt_without_recovery(false) {
|
||||||
Ok(Some(stmt)) => {
|
Ok(Some(stmt)) => {
|
||||||
if self.look_ahead(1, |t| t == &token::OpenDelim(token::Brace)) {
|
if self.look_ahead(1, |t| t == &token::OpenDelim(token::Brace))
|
||||||
|
|| do_not_suggest_help {
|
||||||
// if the next token is an open brace (e.g., `if a b {`), the place-
|
// if the next token is an open brace (e.g., `if a b {`), the place-
|
||||||
// inside-a-block suggestion would be more likely wrong than right
|
// inside-a-block suggestion would be more likely wrong than right
|
||||||
return Err(e);
|
return Err(e);
|
||||||
|
|
15
src/test/ui/issue-51602.rs
Normal file
15
src/test/ui/issue-51602.rs
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
// Copyright 2018 The Rust Project Developers. See the COPYRIGHT
|
||||||
|
// file at the top-level directory of this distribution and at
|
||||||
|
// http://rust-lang.org/COPYRIGHT.
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||||
|
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||||
|
// option. This file may not be copied, modified, or distributed
|
||||||
|
// except according to those terms.
|
||||||
|
|
||||||
|
fn main(){
|
||||||
|
if i in 1..10 {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
10
src/test/ui/issue-51602.stderr
Normal file
10
src/test/ui/issue-51602.stderr
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
error: expected `{`, found `in`
|
||||||
|
--> $DIR/issue-51602.rs:12:10
|
||||||
|
|
|
||||||
|
LL | if i in 1..10 {
|
||||||
|
| -- ^^ expected `{`
|
||||||
|
| |
|
||||||
|
| this `if` statement has a condition, but no block
|
||||||
|
|
||||||
|
error: aborting due to previous error
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue