]> git.lizzy.rs Git - rust.git/commitdiff
Emit clearer diagnostics for parens around `for` loop heads
authorYuki Okushi <yuki.okushi@huawei.com>
Fri, 18 Jun 2021 01:22:23 +0000 (10:22 +0900)
committerYuki Okushi <yuki.okushi@huawei.com>
Fri, 17 Sep 2021 04:14:23 +0000 (13:14 +0900)
compiler/rustc_parse/src/parser/diagnostics.rs
src/test/ui/parser/recover-for-loop-parens-around-head.rs
src/test/ui/parser/recover-for-loop-parens-around-head.stderr

index 4fccfc287fd82e1aed8ee213201fbde7c59a28f8..ab7478c7e5faab52fdc65295c0dcf25f8c9861cb 100644 (file)
@@ -1346,8 +1346,9 @@ pub(super) fn recover_parens_around_for_head(
                     .span_to_snippet(pat.span.trim_start(begin_par_sp).unwrap())
                     .unwrap_or_else(|_| pprust::pat_to_string(&pat));
 
-                self.struct_span_err(self.prev_token.span, "unexpected closing `)`")
-                    .span_label(begin_par_sp, "opening `(`")
+                let sp = MultiSpan::from_spans(vec![begin_par_sp, self.prev_token.span]);
+
+                self.struct_span_err(sp, "unexpected parenthesis surrounding `for` loop head")
                     .span_suggestion(
                         begin_par_sp.to(self.prev_token.span),
                         "remove parenthesis in `for` loop",
index 779e1646344787b680be00576c3e9d588791201d..8080dbc332ae7146d13648157bc3e64fde3f2f77 100644 (file)
@@ -9,7 +9,7 @@ fn main() {
 
     for ( elem in vec ) {
         //~^ 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
     }
 }
index e97cf544ac2683d3df171e902c96ce71f753dfad..98f6b5b884bd2afd44c2844ee7929c0e163ed108 100644 (file)
@@ -4,13 +4,12 @@ error: expected one of `)`, `,`, `@`, or `|`, found keyword `in`
 LL |     for ( elem in vec ) {
    |                ^^ expected one of `)`, `,`, `@`, or `|`
 
-error: unexpected closing `)`
-  --> $DIR/recover-for-loop-parens-around-head.rs:10:23
+error: unexpected parenthesis surrounding `for` loop head
+  --> $DIR/recover-for-loop-parens-around-head.rs:10:9
    |
 LL |     for ( elem in vec ) {
-   |         --------------^
+   |         ^-------------^
    |         |
-   |         opening `(`
    |         help: remove parenthesis in `for` loop: `elem in vec`
 
 error[E0308]: mismatched types