aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorNobel Singh <nobel2073@gmail.com>2024-04-24 02:07:52 +0545
committerArthur Cohen <arthur.cohen@embecosm.com>2025-03-17 16:35:23 +0100
commit539fa6e83798b621eb84eb2ad192c8e65bb1817a (patch)
tree5908e365353023786a0861bf30551763b2f5fa40 /gcc
parenta929d6573468882a3e7217f5bd0ff65764e5a631 (diff)
downloadgcc-539fa6e83798b621eb84eb2ad192c8e65bb1817a.zip
gcc-539fa6e83798b621eb84eb2ad192c8e65bb1817a.tar.gz
gcc-539fa6e83798b621eb84eb2ad192c8e65bb1817a.tar.bz2
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 <nobel2073@gmail.com>
Diffstat (limited to 'gcc')
-rw-r--r--gcc/testsuite/rust/compile/issue-2906.rs10
-rw-r--r--gcc/testsuite/rust/execute/torture/issue-2906.rs34
2 files changed, 44 insertions, 0 deletions
diff --git a/gcc/testsuite/rust/compile/issue-2906.rs b/gcc/testsuite/rust/compile/issue-2906.rs
new file mode 100644
index 0000000..20abcb0
--- /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 0000000..d3ca8ae
--- /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
+}