diff options
author | Nobel Singh <nobel2073@gmail.com> | 2024-04-24 02:07:52 +0545 |
---|---|---|
committer | Arthur Cohen <arthur.cohen@embecosm.com> | 2025-03-17 16:35:23 +0100 |
commit | 539fa6e83798b621eb84eb2ad192c8e65bb1817a (patch) | |
tree | 5908e365353023786a0861bf30551763b2f5fa40 /gcc | |
parent | a929d6573468882a3e7217f5bd0ff65764e5a631 (diff) | |
download | gcc-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.rs | 10 | ||||
-rw-r--r-- | gcc/testsuite/rust/execute/torture/issue-2906.rs | 34 |
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 +} |