summary refs log tree commit diff
path: root/src/test/ui/parser
diff options
context:
space:
mode:
authorRakshith Ravi <rakshith.ravi@gmx.com>2020-03-26 10:36:52 +0530
committerRakshith Ravi <rakshith.ravi@gmx.com>2020-03-26 13:25:34 +0530
commit73c82030e893ab259081bf38b4259e05156c32d0 (patch)
tree1e91e937cebc97aa7752a1964b0c40ca1aa9c9ea /src/test/ui/parser
parenta17dd3608477a47741f97b907a61b6d81524ba4e (diff)
downloadrust-73c82030e893ab259081bf38b4259e05156c32d0.tar.gz
rust-73c82030e893ab259081bf38b4259e05156c32d0.zip
Throw error when encountering `...` instead of `..` while destructing a pattern
Added tests and stderr output
Diffstat (limited to 'src/test/ui/parser')
-rw-r--r--src/test/ui/parser/issue-70388-recover-dotdotdot-rest-pat.rs7
-rw-r--r--src/test/ui/parser/issue-70388-recover-dotdotdot-rest-pat.stderr29
2 files changed, 36 insertions, 0 deletions
diff --git a/src/test/ui/parser/issue-70388-recover-dotdotdot-rest-pat.rs b/src/test/ui/parser/issue-70388-recover-dotdotdot-rest-pat.rs
new file mode 100644
index 00000000000..ca8abd78c47
--- /dev/null
+++ b/src/test/ui/parser/issue-70388-recover-dotdotdot-rest-pat.rs
@@ -0,0 +1,7 @@
+struct Foo(i32);
+
+fn main() {
+    let Foo(...) = Foo(0); //~ ERROR unexpected `...`
+    let [_, ..., _] = [0, 1]; //~ ERROR unexpected `...`
+    let _recovery_witness: () = 0; //~ ERROR mismatched types
+}
diff --git a/src/test/ui/parser/issue-70388-recover-dotdotdot-rest-pat.stderr b/src/test/ui/parser/issue-70388-recover-dotdotdot-rest-pat.stderr
new file mode 100644
index 00000000000..4961e8fc049
--- /dev/null
+++ b/src/test/ui/parser/issue-70388-recover-dotdotdot-rest-pat.stderr
@@ -0,0 +1,29 @@
+error: unexpected `...`
+  --> $DIR/issue-70388-recover-dotdotdot-rest-pat.rs:4:13
+   |
+LL |     let Foo(...) = Foo(0);
+   |             ^^^
+   |             |
+   |             not a valid pattern
+   |             help: for a rest pattern, use `..` instead of `...`
+
+error: unexpected `...`
+  --> $DIR/issue-70388-recover-dotdotdot-rest-pat.rs:5:13
+   |
+LL |     let [_, ..., _] = [0, 1];
+   |             ^^^
+   |             |
+   |             not a valid pattern
+   |             help: for a rest pattern, use `..` instead of `...`
+
+error[E0308]: mismatched types
+  --> $DIR/issue-70388-recover-dotdotdot-rest-pat.rs:6:33
+   |
+LL |     let _recovery_witness: () = 0;
+   |                            --   ^ expected `()`, found integer
+   |                            |
+   |                            expected due to this
+
+error: aborting due to 3 previous errors
+
+For more information about this error, try `rustc --explain E0308`.