about summary refs log tree commit diff
path: root/src/test/ui
diff options
context:
space:
mode:
authorMazdak Farrokhzad <twingoow@gmail.com>2019-04-12 20:36:16 +0200
committerGitHub <noreply@github.com>2019-04-12 20:36:16 +0200
commitaf4acd05338dcb0d47e235862b303c37d655951f (patch)
treedffad55345acacf47eb4c37efabe13d151c0fcd7 /src/test/ui
parentca9f04e41e2bb124e3ae74f6c179eeeac96e9c67 (diff)
parent9b6b3d618c16976a273cfd4f95408eef37e6c82e (diff)
downloadrust-af4acd05338dcb0d47e235862b303c37d655951f.tar.gz
rust-af4acd05338dcb0d47e235862b303c37d655951f.zip
Rollup merge of #59866 - estebank:recover-missing-semi, r=petrochenkov
Recover from missing semicolon based on the found token

When encountering one of a few keywords when a semicolon was
expected, suggest the semicolon and recover:

```
error: expected one of `.`, `;`, `?`, or an operator, found `let`
  --> $DIR/recover-missing-semi.rs:4:5
   |
LL |     let _: usize = ()
   |                      - help: missing semicolon here
LL |
LL |     let _ = 3;
   |     ^^^

error[E0308]: mismatched types
  --> $DIR/recover-missing-semi.rs:2:20
   |
LL |     let _: usize = ()
   |                    ^^ expected usize, found ()
   |
   = note: expected type `usize`
              found type `()`
```
Diffstat (limited to 'src/test/ui')
-rw-r--r--src/test/ui/parser/recover-missing-semi.rs13
-rw-r--r--src/test/ui/parser/recover-missing-semi.stderr39
2 files changed, 52 insertions, 0 deletions
diff --git a/src/test/ui/parser/recover-missing-semi.rs b/src/test/ui/parser/recover-missing-semi.rs
new file mode 100644
index 00000000000..1893dc716be
--- /dev/null
+++ b/src/test/ui/parser/recover-missing-semi.rs
@@ -0,0 +1,13 @@
+fn main() {
+    let _: usize = ()
+    //~^ ERROR mismatched types
+    let _ = 3;
+    //~^ ERROR expected one of
+}
+
+fn foo() -> usize {
+    let _: usize = ()
+    //~^ ERROR mismatched types
+    return 3;
+    //~^ ERROR expected one of
+}
diff --git a/src/test/ui/parser/recover-missing-semi.stderr b/src/test/ui/parser/recover-missing-semi.stderr
new file mode 100644
index 00000000000..99339e4dd50
--- /dev/null
+++ b/src/test/ui/parser/recover-missing-semi.stderr
@@ -0,0 +1,39 @@
+error: expected one of `.`, `;`, `?`, or an operator, found `let`
+  --> $DIR/recover-missing-semi.rs:4:5
+   |
+LL |     let _: usize = ()
+   |                      - help: a semicolon may be missing here
+LL |
+LL |     let _ = 3;
+   |     ^^^
+
+error: expected one of `.`, `;`, `?`, or an operator, found `return`
+  --> $DIR/recover-missing-semi.rs:11:5
+   |
+LL |     let _: usize = ()
+   |                      - help: a semicolon may be missing here
+LL |
+LL |     return 3;
+   |     ^^^^^^
+
+error[E0308]: mismatched types
+  --> $DIR/recover-missing-semi.rs:2:20
+   |
+LL |     let _: usize = ()
+   |                    ^^ expected usize, found ()
+   |
+   = note: expected type `usize`
+              found type `()`
+
+error[E0308]: mismatched types
+  --> $DIR/recover-missing-semi.rs:9:20
+   |
+LL |     let _: usize = ()
+   |                    ^^ expected usize, found ()
+   |
+   = note: expected type `usize`
+              found type `()`
+
+error: aborting due to 4 previous errors
+
+For more information about this error, try `rustc --explain E0308`.