about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorEsteban Küber <esteban@kuber.com.ar>2020-10-25 14:20:44 -0700
committerEsteban Küber <esteban@kuber.com.ar>2020-10-25 18:34:14 -0700
commitff61949860813247b26d96eb374b41b46becba81 (patch)
tree6d6b637fba7fd99eca376a8e3a17b831146dc5fd /src
parent040f56881500279889fd847b767f5fde14b21028 (diff)
downloadrust-ff61949860813247b26d96eb374b41b46becba81.tar.gz
rust-ff61949860813247b26d96eb374b41b46becba81.zip
Tweak invalid `fn` header and body parsing
* Recover empty `fn` bodies when encountering `}`
* Recover trailing `>` in return types
* Recover from non-type in array type `[<BAD TOKEN>; LEN]`
Diffstat (limited to 'src')
-rw-r--r--src/test/ui/issues/issue-39616.rs1
-rw-r--r--src/test/ui/issues/issue-39616.stderr8
-rw-r--r--src/test/ui/parser/issue-24780.rs7
-rw-r--r--src/test/ui/parser/issue-24780.stderr4
-rw-r--r--src/test/ui/parser/issue-6610.stderr8
5 files changed, 10 insertions, 18 deletions
diff --git a/src/test/ui/issues/issue-39616.rs b/src/test/ui/issues/issue-39616.rs
index 9aebb4e2f48..46b5aa334ca 100644
--- a/src/test/ui/issues/issue-39616.rs
+++ b/src/test/ui/issues/issue-39616.rs
@@ -1,4 +1,3 @@
 fn foo(a: [0; 1]) {} //~ ERROR expected type, found `0`
-//~| ERROR expected one of `)`, `,`, `->`, `;`, `where`, or `{`, found `]`
 
 fn main() {}
diff --git a/src/test/ui/issues/issue-39616.stderr b/src/test/ui/issues/issue-39616.stderr
index fa8ef50a073..393d1f2e2ce 100644
--- a/src/test/ui/issues/issue-39616.stderr
+++ b/src/test/ui/issues/issue-39616.stderr
@@ -4,11 +4,5 @@ error: expected type, found `0`
 LL | fn foo(a: [0; 1]) {}
    |            ^ expected type
 
-error: expected one of `)`, `,`, `->`, `;`, `where`, or `{`, found `]`
-  --> $DIR/issue-39616.rs:1:16
-   |
-LL | fn foo(a: [0; 1]) {}
-   |                ^ expected one of `)`, `,`, `->`, `;`, `where`, or `{`
-
-error: aborting due to 2 previous errors
+error: aborting due to previous error
 
diff --git a/src/test/ui/parser/issue-24780.rs b/src/test/ui/parser/issue-24780.rs
index 568a6c5f05c..20665b549d2 100644
--- a/src/test/ui/parser/issue-24780.rs
+++ b/src/test/ui/parser/issue-24780.rs
@@ -1,8 +1,9 @@
 // Verify that '>' is not both expected and found at the same time, as it used
 // to happen in #24780. For example, following should be an error:
-// expected one of ..., `>`, ... found `>`
+// expected one of ..., `>`, ... found `>`. No longer exactly this, but keeping for posterity.
 
-fn foo() -> Vec<usize>> {
-    //~^ ERROR expected one of `!`, `+`, `::`, `;`, `where`, or `{`, found `>`
+fn foo() -> Vec<usize>> { //~ ERROR unmatched angle bracket
     Vec::new()
 }
+
+fn main() {}
diff --git a/src/test/ui/parser/issue-24780.stderr b/src/test/ui/parser/issue-24780.stderr
index bdd089bb7a1..d12b13d35f8 100644
--- a/src/test/ui/parser/issue-24780.stderr
+++ b/src/test/ui/parser/issue-24780.stderr
@@ -1,8 +1,8 @@
-error: expected one of `!`, `+`, `::`, `;`, `where`, or `{`, found `>`
+error: unmatched angle bracket
   --> $DIR/issue-24780.rs:5:23
    |
 LL | fn foo() -> Vec<usize>> {
-   |                       ^ expected one of `!`, `+`, `::`, `;`, `where`, or `{`
+   |                       ^^ help: remove extra angle bracket
 
 error: aborting due to previous error
 
diff --git a/src/test/ui/parser/issue-6610.stderr b/src/test/ui/parser/issue-6610.stderr
index acbecfded4b..4a3bc752553 100644
--- a/src/test/ui/parser/issue-6610.stderr
+++ b/src/test/ui/parser/issue-6610.stderr
@@ -2,11 +2,9 @@ error: expected one of `->`, `;`, `where`, or `{`, found `}`
   --> $DIR/issue-6610.rs:1:20
    |
 LL | trait Foo { fn a() }
-   |           -        ^
-   |           |        |
-   |           |        expected one of `->`, `;`, `where`, or `{`
-   |           |        the item list ends here
-   |           while parsing this item list starting here
+   |                -   ^ expected one of `->`, `;`, `where`, or `{`
+   |                |
+   |                while parsing this `fn`
 
 error: aborting due to previous error