about summary refs log tree commit diff
diff options
context:
space:
mode:
authorsapir <yasapir@gmail.com>2020-01-01 01:51:37 +0200
committersapir <yasapir@gmail.com>2020-04-10 03:52:13 +0300
commit0c156af20d74b2e23c2b862110a5ed5fa8d65a51 (patch)
treea591f7da7c8ce441058d31c0ed1f2ae269a9b6cd
parent94d346360da50f159e0dc777dc9bc3c5b6b51a00 (diff)
Add tests for issue #67691
-rw-r--r--src/test/ui/lint/issue-67691-unused-field-in-or-pattern.fixed61
-rw-r--r--src/test/ui/lint/issue-67691-unused-field-in-or-pattern.rs61
-rw-r--r--src/test/ui/lint/issue-67691-unused-field-in-or-pattern.stderr52
3 files changed, 174 insertions, 0 deletions
diff --git a/src/test/ui/lint/issue-67691-unused-field-in-or-pattern.fixed b/src/test/ui/lint/issue-67691-unused-field-in-or-pattern.fixed
new file mode 100644
index 00000000000..7ec0b33f919
--- /dev/null
+++ b/src/test/ui/lint/issue-67691-unused-field-in-or-pattern.fixed
@@ -0,0 +1,61 @@
+// run-rustfix
+
+#![feature(or_patterns)]
+#![deny(unused)]
+
+pub enum MyEnum {
+    A { i: i32, j: i32 },
+    B { i: i32, j: i32 },
+}
+
+pub fn no_ref(x: MyEnum) {
+    use MyEnum::*;
+
+    match x {
+        A { i, j: _ } | B { i, j: _ } => { //~ ERROR unused variable
+            println!("{}", i);
+        }
+    }
+}
+
+pub fn with_ref(x: MyEnum) {
+    use MyEnum::*;
+
+    match x {
+        A { i, j: _ } | B { i, j: _ } => { //~ ERROR unused variable
+            println!("{}", i);
+        }
+    }
+}
+
+pub fn inner_no_ref(x: Option<MyEnum>) {
+    use MyEnum::*;
+
+    match x {
+        Some(A { i, j: _ } | B { i, j: _ }) => { //~ ERROR unused variable
+            println!("{}", i);
+        }
+
+        _ => {}
+    }
+}
+
+pub fn inner_with_ref(x: Option<MyEnum>) {
+    use MyEnum::*;
+
+    match x {
+        Some(A { i, j: _ } | B { i, j: _ }) => { //~ ERROR unused variable
+            println!("{}", i);
+        }
+
+        _ => {}
+    }
+}
+
+pub fn main() {
+    no_ref(MyEnum::A { i: 1, j: 2 });
+    with_ref(MyEnum::A { i: 1, j: 2 });
+
+    inner_no_ref(Some(MyEnum::A { i: 1, j: 2 }));
+    inner_with_ref(Some(MyEnum::A { i: 1, j: 2 }));
+}
diff --git a/src/test/ui/lint/issue-67691-unused-field-in-or-pattern.rs b/src/test/ui/lint/issue-67691-unused-field-in-or-pattern.rs
new file mode 100644
index 00000000000..d43c637767a
--- /dev/null
+++ b/src/test/ui/lint/issue-67691-unused-field-in-or-pattern.rs
@@ -0,0 +1,61 @@
+// run-rustfix
+
+#![feature(or_patterns)]
+#![deny(unused)]
+
+pub enum MyEnum {
+    A { i: i32, j: i32 },
+    B { i: i32, j: i32 },
+}
+
+pub fn no_ref(x: MyEnum) {
+    use MyEnum::*;
+
+    match x {
+        A { i, j } | B { i, j } => { //~ ERROR unused variable
+            println!("{}", i);
+        }
+    }
+}
+
+pub fn with_ref(x: MyEnum) {
+    use MyEnum::*;
+
+    match x {
+        A { i, ref j } | B { i, ref j } => { //~ ERROR unused variable
+            println!("{}", i);
+        }
+    }
+}
+
+pub fn inner_no_ref(x: Option<MyEnum>) {
+    use MyEnum::*;
+
+    match x {
+        Some(A { i, j } | B { i, j }) => { //~ ERROR unused variable
+            println!("{}", i);
+        }
+
+        _ => {}
+    }
+}
+
+pub fn inner_with_ref(x: Option<MyEnum>) {
+    use MyEnum::*;
+
+    match x {
+        Some(A { i, ref j } | B { i, ref j }) => { //~ ERROR unused variable
+            println!("{}", i);
+        }
+
+        _ => {}
+    }
+}
+
+pub fn main() {
+    no_ref(MyEnum::A { i: 1, j: 2 });
+    with_ref(MyEnum::A { i: 1, j: 2 });
+
+    inner_no_ref(Some(MyEnum::A { i: 1, j: 2 }));
+    inner_with_ref(Some(MyEnum::A { i: 1, j: 2 }));
+}
diff --git a/src/test/ui/lint/issue-67691-unused-field-in-or-pattern.stderr b/src/test/ui/lint/issue-67691-unused-field-in-or-pattern.stderr
new file mode 100644
index 00000000000..bda53c67331
--- /dev/null
+++ b/src/test/ui/lint/issue-67691-unused-field-in-or-pattern.stderr
@@ -0,0 +1,52 @@
+error: unused variable: `j`
+  --> $DIR/issue-67691-unused-field-in-or-pattern.rs:15:16
+   |
+LL |         A { i, j } | B { i, j } => {
+   |                ^            ^
+   |
+note: the lint level is defined here
+  --> $DIR/issue-67691-unused-field-in-or-pattern.rs:4:9
+   |
+LL | #![deny(unused)]
+   |         ^^^^^^
+   = note: `#[deny(unused_variables)]` implied by `#[deny(unused)]`
+help: try ignoring the field
+   |
+LL |         A { i, j: _ } | B { i, j: _ } => {
+   |                ^^^^            ^^^^
+
+error: unused variable: `j`
+  --> $DIR/issue-67691-unused-field-in-or-pattern.rs:25:16
+   |
+LL |         A { i, ref j } | B { i, ref j } => {
+   |                ^^^^^            ^^^^^
+   |
+help: try ignoring the field
+   |
+LL |         A { i, j: _ } | B { i, j: _ } => {
+   |                ^^^^            ^^^^
+
+error: unused variable: `j`
+  --> $DIR/issue-67691-unused-field-in-or-pattern.rs:35:21
+   |
+LL |         Some(A { i, j } | B { i, j }) => {
+   |                     ^            ^
+   |
+help: try ignoring the field
+   |
+LL |         Some(A { i, j: _ } | B { i, j: _ }) => {
+   |                     ^^^^            ^^^^
+
+error: unused variable: `j`
+  --> $DIR/issue-67691-unused-field-in-or-pattern.rs:47:21
+   |
+LL |         Some(A { i, ref j } | B { i, ref j }) => {
+   |                     ^^^^^            ^^^^^
+   |
+help: try ignoring the field
+   |
+LL |         Some(A { i, j: _ } | B { i, j: _ }) => {
+   |                     ^^^^            ^^^^
+
+error: aborting due to 5 previous errors
+