forked from rust-lang/rust
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add test for stepping though
match
expressions
- Loading branch information
1 parent
0a42dfc
commit 84a2661
Showing
1 changed file
with
383 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,383 @@ | ||
// compile-flags: -g | ||
// ignore-android: FIXME(#10381) | ||
|
||
// === GDB TESTS ============================================================== | ||
|
||
// gdb-command: r | ||
|
||
// gdb-command: s | ||
// gdb-check:[...]match x { | ||
|
||
// gdb-command: s | ||
// gdb-check:[...] Some(42) => 1, | ||
|
||
// gdb-command: s | ||
// gdb-check:[...]} | ||
|
||
// gdb-command: s | ||
// gdb-check:[...]match_enum(Some(12)); | ||
|
||
// gdb-command: s | ||
// gdb-check:[...]match x { | ||
|
||
// gdb-command: s | ||
// gdb-check:[...]Some(_) => 2, | ||
|
||
// gdb-command: s | ||
// gdb-check:[...]} | ||
|
||
// gdb-command: s | ||
// gdb-check:[...]match_enum(None); | ||
|
||
// gdb-command: s | ||
// gdb-check:[...]match x { | ||
|
||
// gdb-command: s | ||
// gdb-check:[...]None => 3, | ||
|
||
// gdb-command: s | ||
// gdb-check:[...]} | ||
|
||
// gdb-command: s | ||
// gdb-check:[...]match_int(1); | ||
|
||
// gdb-command: s | ||
// gdb-check:[...]match y { | ||
|
||
// gdb-command: s | ||
// gdb-check:[...]1 => 3, | ||
|
||
// gdb-command: s | ||
// gdb-check:[...]} | ||
|
||
// gdb-command: s | ||
// gdb-check:[...]match_int(2); | ||
|
||
// gdb-command: s | ||
// gdb-check:[...]match y { | ||
|
||
// gdb-command: s | ||
// gdb-check:[...]_ => 4, | ||
|
||
// gdb-command: s | ||
// gdb-check:[...]} | ||
|
||
// gdb-command: s | ||
// gdb-check:[...]match_int(0); | ||
|
||
// gdb-command: s | ||
// gdb-check:[...]match y { | ||
|
||
// gdb-command: s | ||
// gdb-check:[...]0 => 2, | ||
|
||
// gdb-command: s | ||
// gdb-check:[...]} | ||
|
||
// gdb-command: s | ||
// gdb-check:[...]match_int(-1); | ||
|
||
// gdb-command: s | ||
// gdb-check:[...]match y { | ||
|
||
// gdb-command: s | ||
// gdb-check:[...]-1 => 1, | ||
|
||
// gdb-command: s | ||
// gdb-check:[...]} | ||
|
||
// gdb-command: s | ||
// gdb-check:[...]match_tuple(5, 12); | ||
|
||
// gdb-command: s | ||
// gdb-check:[...]match (a, b) { | ||
|
||
// gdb-command: s | ||
// gdb-check:[...](5, 12) => 3, | ||
|
||
// gdb-command: s | ||
// gdb-check:[...]} | ||
|
||
// gdb-command: s | ||
// gdb-check:[...]match_tuple(29, 1); | ||
|
||
// gdb-command: s | ||
// gdb-check:[...]match (a, b) { | ||
|
||
// gdb-command: s | ||
// gdb-check:[...](29, _) => 2, | ||
|
||
// gdb-command: s | ||
// gdb-check:[...]} | ||
|
||
// gdb-command: s | ||
// gdb-check:[...]match_tuple(12, 12); | ||
|
||
// gdb-command: s | ||
// gdb-check:[...]match (a, b) { | ||
|
||
// gdb-command: s | ||
// gdb-check:[...](_, _) => 5 | ||
|
||
// gdb-command: s | ||
// gdb-check:[...]} | ||
|
||
// gdb-command: s | ||
// gdb-check:[...]match_tuple(42, 12); | ||
|
||
// gdb-command: s | ||
// gdb-check:[...]match (a, b) { | ||
|
||
// gdb-command: s | ||
// gdb-check:[...](42, 12) => 1, | ||
|
||
// gdb-command: s | ||
// gdb-check:[...]} | ||
|
||
// gdb-command: s | ||
// gdb-check:[...]match_tuple(1, 9); | ||
|
||
// gdb-command: s | ||
// gdb-check:[...]match (a, b) { | ||
|
||
// gdb-command: s | ||
// gdb-check:[...](_, 9) => 4, | ||
|
||
// gdb-command: s | ||
// gdb-check:[...]} | ||
|
||
// gdb-command: s | ||
// gdb-check:[...]} | ||
|
||
// === CDB TESTS ============================================================== | ||
|
||
// Enable line-based debugging and print lines after stepping. | ||
// cdb-command: .lines -e | ||
// cdb-command: l+s | ||
// cdb-command: l+t | ||
|
||
// cdb-command: g | ||
|
||
// cdb-command: t | ||
// cdb-check: [...]: fn match_enum(x: Option<u32>) -> u8 { | ||
|
||
// cdb-command: t | ||
// cdb-check: [...]: match x { | ||
|
||
// cdb-command: t | ||
// cdb-check: [...]: Some(42) => 1, | ||
|
||
// cdb-command: t | ||
// cdb-check: [...]: } | ||
|
||
// cdb-command: t | ||
// cdb-check: [...]: match_enum(Some(12)); | ||
|
||
// cdb-command: t | ||
// cdb-check: [...]: fn match_enum(x: Option<u32>) -> u8 { | ||
|
||
// cdb-command: t | ||
// cdb-check: [...]: match x { | ||
|
||
// cdb-command: t | ||
// cdb-check: [...]: Some(_) => 2, | ||
|
||
// cdb-command: t | ||
// cdb-check: [...]: } | ||
|
||
// cdb-command: t | ||
// cdb-check: [...]: match_enum(None); | ||
|
||
// cdb-command: t | ||
// cdb-check: [...]: fn match_enum(x: Option<u32>) -> u8 { | ||
|
||
// cdb-command: t | ||
// cdb-check: [...]: match x { | ||
|
||
// cdb-command: t | ||
// cdb-check: [...]: None => 3, | ||
|
||
// cdb-command: t | ||
// cdb-check: [...]: } | ||
|
||
// cdb-command: t | ||
// cdb-check: [...]: match_int(1); | ||
|
||
// cdb-command: t | ||
// cdb-check: [...]: fn match_int(y: i32) -> u16 { | ||
|
||
// cdb-command: t | ||
// cdb-check: [...]: match y { | ||
|
||
// cdb-command: t | ||
// cdb-check: [...]: 1 => 3, | ||
|
||
// cdb-command: t | ||
// cdb-check: [...]: } | ||
|
||
// cdb-command: t | ||
// cdb-check: [...]: match_int(2); | ||
|
||
// cdb-command: t | ||
// cdb-check: [...]: fn match_int(y: i32) -> u16 { | ||
|
||
// cdb-command: t | ||
// cdb-check: [...]: match y { | ||
|
||
// cdb-command: t | ||
// cdb-check: [...]: _ => 4, | ||
|
||
// cdb-command: t | ||
// cdb-check: [...]: } | ||
|
||
// cdb-command: t | ||
// cdb-check: [...]: match_int(0); | ||
|
||
// cdb-command: t | ||
// cdb-check: [...]: fn match_int(y: i32) -> u16 { | ||
|
||
// cdb-command: t | ||
// cdb-check: [...]: match y { | ||
|
||
// cdb-command: t | ||
// cdb-check: [...]: 0 => 2, | ||
|
||
// cdb-command: t | ||
// cdb-check: [...]: } | ||
|
||
// cdb-command: t | ||
// cdb-check: [...]: match_int(-1); | ||
|
||
// cdb-command: t | ||
// cdb-check: [...]: fn match_int(y: i32) -> u16 { | ||
|
||
// cdb-command: t | ||
// cdb-check: [...]: match y { | ||
|
||
// cdb-command: t | ||
// cdb-check: [...]: -1 => 1, | ||
|
||
// cdb-command: t | ||
// cdb-check: [...]: } | ||
|
||
// cdb-command: t | ||
// cdb-check: [...]: match_tuple(5, 12); | ||
|
||
// cdb-command: t | ||
// cdb-check: [...]: fn match_tuple(a: u8, b: i8) -> u32 { | ||
|
||
// cdb-command: t | ||
// cdb-check: [...]: match (a, b) { | ||
|
||
// cdb-command: t | ||
// cdb-check: [...]: (5, 12) => 3, | ||
|
||
// cdb-command: t | ||
// cdb-check: [...]: } | ||
|
||
// cdb-command: t | ||
// cdb-check: [...]: match_tuple(29, 1); | ||
|
||
// cdb-command: t | ||
// cdb-check: [...]: fn match_tuple(a: u8, b: i8) -> u32 { | ||
|
||
// cdb-command: t | ||
// cdb-check: [...]: match (a, b) { | ||
|
||
// cdb-command: t | ||
// cdb-check: [...]: (29, _) => 2, | ||
|
||
// cdb-command: t | ||
// cdb-check: [...]: } | ||
|
||
// cdb-command: t | ||
// cdb-check: [...]: match_tuple(12, 12); | ||
|
||
// cdb-command: t | ||
// cdb-check: [...]: fn match_tuple(a: u8, b: i8) -> u32 { | ||
|
||
// cdb-command: t | ||
// cdb-check: [...]: match (a, b) { | ||
|
||
// cdb-command: t | ||
// cdb-check: [...]: (_, _) => 5 | ||
|
||
// cdb-command: t | ||
// cdb-check: [...]: } | ||
|
||
// cdb-command: t | ||
// cdb-check: [...]: match_tuple(42, 12); | ||
|
||
// cdb-command: t | ||
// cdb-check: [...]: fn match_tuple(a: u8, b: i8) -> u32 { | ||
|
||
// cdb-command: t | ||
// cdb-check: [...]: match (a, b) { | ||
|
||
// cdb-command: t | ||
// cdb-check: [...]: (42, 12) => 1, | ||
|
||
// cdb-command: t | ||
// cdb-check: [...]: } | ||
|
||
// cdb-command: t | ||
// cdb-check: [...]: match_tuple(1, 9); | ||
|
||
// cdb-command: t | ||
// cdb-check: [...]: fn match_tuple(a: u8, b: i8) -> u32 { | ||
|
||
// cdb-command: t | ||
// cdb-check: [...]: match (a, b) { | ||
|
||
// cdb-command: t | ||
// cdb-check: [...]: (_, 9) => 4, | ||
|
||
// cdb-command: t | ||
// cdb-check: [...]: } | ||
|
||
// cdb-command: t | ||
// cdb-check: [...]: } | ||
|
||
fn main() { | ||
match_enum(Some(42)); // #break | ||
match_enum(Some(12)); | ||
match_enum(None); | ||
|
||
match_int(1); | ||
match_int(2); | ||
match_int(0); | ||
match_int(-1); | ||
|
||
match_tuple(5, 12); | ||
match_tuple(29, 1); | ||
match_tuple(12, 12); | ||
match_tuple(42, 12); | ||
match_tuple(1, 9); | ||
} | ||
|
||
fn match_enum(x: Option<u32>) -> u8 { | ||
match x { | ||
Some(42) => 1, | ||
Some(_) => 2, | ||
None => 3, | ||
} | ||
} | ||
|
||
fn match_int(y: i32) -> u16 { | ||
match y { | ||
-1 => 1, | ||
0 => 2, | ||
1 => 3, | ||
_ => 4, | ||
} | ||
} | ||
|
||
fn match_tuple(a: u8, b: i8) -> u32 { | ||
match (a, b) { | ||
(42, 12) => 1, | ||
(29, _) => 2, | ||
(5, 12) => 3, | ||
(_, 9) => 4, | ||
(_, _) => 5 | ||
} | ||
} |