]> git.lizzy.rs Git - rust.git/commitdiff
Test that `_ @ subpat` is syntactically rejected.
authorMazdak Farrokhzad <twingoow@gmail.com>
Sun, 15 Dec 2019 03:40:26 +0000 (04:40 +0100)
committerMazdak Farrokhzad <twingoow@gmail.com>
Mon, 23 Dec 2019 13:47:20 +0000 (14:47 +0100)
src/test/ui/pattern/bindings-after-at/wild-before-at-syntactically-rejected.rs [new file with mode: 0644]
src/test/ui/pattern/bindings-after-at/wild-before-at-syntactically-rejected.stderr [new file with mode: 0644]

diff --git a/src/test/ui/pattern/bindings-after-at/wild-before-at-syntactically-rejected.rs b/src/test/ui/pattern/bindings-after-at/wild-before-at-syntactically-rejected.rs
new file mode 100644 (file)
index 0000000..50ac0ef
--- /dev/null
@@ -0,0 +1,16 @@
+// Here we check that `_ @ sub` is syntactically invalid
+// and comes with a nice actionable suggestion.
+
+fn main() {}
+
+#[cfg(FALSE)]
+fn wild_before_at_is_bad_syntax() {
+    let _ @ a = 0;
+    //~^ ERROR pattern on wrong side of `@`
+    let _ @ ref a = 0;
+    //~^ ERROR pattern on wrong side of `@`
+    let _ @ ref mut a = 0;
+    //~^ ERROR pattern on wrong side of `@`
+    let _ @ (a, .., b) = (0, 1, 2, 3);
+    //~^ ERROR left-hand side of `@` must be a binding
+}
diff --git a/src/test/ui/pattern/bindings-after-at/wild-before-at-syntactically-rejected.stderr b/src/test/ui/pattern/bindings-after-at/wild-before-at-syntactically-rejected.stderr
new file mode 100644 (file)
index 0000000..2f45415
--- /dev/null
@@ -0,0 +1,43 @@
+error: pattern on wrong side of `@`
+  --> $DIR/wild-before-at-syntactically-rejected.rs:8:9
+   |
+LL |     let _ @ a = 0;
+   |         -^^^-
+   |         |   |
+   |         |   binding on the right, should be on the left
+   |         pattern on the left, should be on the right
+   |         help: switch the order: `a @ _`
+
+error: pattern on wrong side of `@`
+  --> $DIR/wild-before-at-syntactically-rejected.rs:10:9
+   |
+LL |     let _ @ ref a = 0;
+   |         -^^^-----
+   |         |   |
+   |         |   binding on the right, should be on the left
+   |         pattern on the left, should be on the right
+   |         help: switch the order: `ref a @ _`
+
+error: pattern on wrong side of `@`
+  --> $DIR/wild-before-at-syntactically-rejected.rs:12:9
+   |
+LL |     let _ @ ref mut a = 0;
+   |         -^^^---------
+   |         |   |
+   |         |   binding on the right, should be on the left
+   |         pattern on the left, should be on the right
+   |         help: switch the order: `ref mut a @ _`
+
+error: left-hand side of `@` must be a binding
+  --> $DIR/wild-before-at-syntactically-rejected.rs:14:9
+   |
+LL |     let _ @ (a, .., b) = (0, 1, 2, 3);
+   |         -^^^----------
+   |         |   |
+   |         |   also a pattern
+   |         interpreted as a pattern, not a binding
+   |
+   = note: bindings are `x`, `mut x`, `ref x`, and `ref mut x`
+
+error: aborting due to 4 previous errors
+