https://gcc.gnu.org/g:539fa6e83798b621eb84eb2ad192c8e65bb1817a

commit r15-8104-g539fa6e83798b621eb84eb2ad192c8e65bb1817a
Author: Nobel Singh <nobel2...@gmail.com>
Date:   Wed Apr 24 02:07:52 2024 +0545

    gccrs: Add testcases for handling struct as scrutinee for match expr
    
    gcc/testsuite/ChangeLog:
    
            * rust/compile/issue-2906.rs: New test.
            * rust/execute/torture/issue-2906.rs: New test.
    
    Signed-off-by: Nobel Singh <nobel2...@gmail.com>

Diff:
---
 gcc/testsuite/rust/compile/issue-2906.rs         | 10 +++++++
 gcc/testsuite/rust/execute/torture/issue-2906.rs | 34 ++++++++++++++++++++++++
 2 files changed, 44 insertions(+)

diff --git a/gcc/testsuite/rust/compile/issue-2906.rs 
b/gcc/testsuite/rust/compile/issue-2906.rs
new file mode 100644
index 000000000000..20abcb095b8f
--- /dev/null
+++ b/gcc/testsuite/rust/compile/issue-2906.rs
@@ -0,0 +1,10 @@
+// { dg-warning "field is never read: .a." "" { target *-*-* } .-1 }
+struct Foo { a: i32 }
+
+fn main() {
+    let a = Foo { a: 15 };
+    
+    match a {
+        b => { }
+    }
+}
\ No newline at end of file
diff --git a/gcc/testsuite/rust/execute/torture/issue-2906.rs 
b/gcc/testsuite/rust/execute/torture/issue-2906.rs
new file mode 100644
index 000000000000..d3ca8ae1c5d4
--- /dev/null
+++ b/gcc/testsuite/rust/execute/torture/issue-2906.rs
@@ -0,0 +1,34 @@
+// { dg-warning "field is never read: .x." "" { target *-*-* } .-1 }
+// { dg-warning "field is never read: .y." "" { target *-*-* } .-2 }
+struct Point {
+    x: u32,
+    y: u32,
+}
+
+fn is_origin(p: Point) -> bool {
+    match p {
+        Point { x, y } => {
+            if x == 0 && y == 0 {
+                return true;
+            }
+            false
+        }
+        _ => false,
+    }
+}
+
+fn main() -> i32 {
+    let p = Point { x: 0, y: 0 };
+    let q = Point { x: 0, y: 1 };
+    let mut retval = 2;
+    
+    if is_origin(p) {
+        retval -= 1;
+    }
+    
+    if !is_origin(q) {
+        retval -= 1;
+    }
+
+    retval
+}

Reply via email to