Emit clearer diagnostics for parens around for
loop heads
This commit is contained in:
parent
78a46efff0
commit
58765d61ee
3 changed files with 7 additions and 7 deletions
|
@ -1346,8 +1346,9 @@ impl<'a> Parser<'a> {
|
||||||
.span_to_snippet(pat.span.trim_start(begin_par_sp).unwrap())
|
.span_to_snippet(pat.span.trim_start(begin_par_sp).unwrap())
|
||||||
.unwrap_or_else(|_| pprust::pat_to_string(&pat));
|
.unwrap_or_else(|_| pprust::pat_to_string(&pat));
|
||||||
|
|
||||||
self.struct_span_err(self.prev_token.span, "unexpected closing `)`")
|
let sp = MultiSpan::from_spans(vec![begin_par_sp, self.prev_token.span]);
|
||||||
.span_label(begin_par_sp, "opening `(`")
|
|
||||||
|
self.struct_span_err(sp, "unexpected parenthesis surrounding `for` loop head")
|
||||||
.span_suggestion(
|
.span_suggestion(
|
||||||
begin_par_sp.to(self.prev_token.span),
|
begin_par_sp.to(self.prev_token.span),
|
||||||
"remove parenthesis in `for` loop",
|
"remove parenthesis in `for` loop",
|
||||||
|
|
|
@ -9,7 +9,7 @@ fn main() {
|
||||||
|
|
||||||
for ( elem in vec ) {
|
for ( elem in vec ) {
|
||||||
//~^ ERROR expected one of `)`, `,`, `@`, or `|`, found keyword `in`
|
//~^ ERROR expected one of `)`, `,`, `@`, or `|`, found keyword `in`
|
||||||
//~| ERROR unexpected closing `)`
|
//~| ERROR unexpected parenthesis surrounding `for` loop head
|
||||||
const RECOVERY_WITNESS: () = 0; //~ ERROR mismatched types
|
const RECOVERY_WITNESS: () = 0; //~ ERROR mismatched types
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,13 +4,12 @@ error: expected one of `)`, `,`, `@`, or `|`, found keyword `in`
|
||||||
LL | for ( elem in vec ) {
|
LL | for ( elem in vec ) {
|
||||||
| ^^ expected one of `)`, `,`, `@`, or `|`
|
| ^^ expected one of `)`, `,`, `@`, or `|`
|
||||||
|
|
||||||
error: unexpected closing `)`
|
error: unexpected parenthesis surrounding `for` loop head
|
||||||
--> $DIR/recover-for-loop-parens-around-head.rs:10:23
|
--> $DIR/recover-for-loop-parens-around-head.rs:10:9
|
||||||
|
|
|
|
||||||
LL | for ( elem in vec ) {
|
LL | for ( elem in vec ) {
|
||||||
| --------------^
|
| ^-------------^
|
||||||
| |
|
| |
|
||||||
| opening `(`
|
|
||||||
| help: remove parenthesis in `for` loop: `elem in vec`
|
| help: remove parenthesis in `for` loop: `elem in vec`
|
||||||
|
|
||||||
error[E0308]: mismatched types
|
error[E0308]: mismatched types
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue