rust/tests/run-coverage/match_or_pattern.coverage
Zalathar 72b721f48e Resolve all warnings in run-coverage tests
When one of these tests fails, any compiler warnings will be printed to the
console, which makes it harder to track down the actual reason for failure.

(The outstanding warnings were found by temporarily adding `-Dwarnings` to the
compiler arguments for `RunCoverage` in `src/tools/compiletest/src/runtest.rs`.)
2023-08-26 14:35:34 +10:00

49 lines
1.6 KiB
Plaintext

LL| 1|fn main() {
LL| 1| // Initialize test constants in a way that cannot be determined at compile time, to ensure
LL| 1| // rustc and LLVM cannot optimize out statements (or coverage counters) downstream from
LL| 1| // dependent conditions.
LL| 1| let is_true = std::env::args().len() == 1;
LL| 1|
LL| 1| let mut a: u8 = 0;
LL| 1| let mut b: u8 = 0;
LL| 1| if is_true {
LL| 1| a = 2;
LL| 1| b = 0;
LL| 1| }
^0
LL| 1| match (a, b) {
LL| | // Or patterns generate MIR `SwitchInt` with multiple targets to the same `BasicBlock`.
LL| | // This test confirms a fix for Issue #79569.
LL| 0| (0 | 1, 2 | 3) => {}
LL| 1| _ => {}
LL| | }
LL| 1| if is_true {
LL| 1| a = 0;
LL| 1| b = 0;
LL| 1| }
^0
LL| 1| match (a, b) {
LL| 0| (0 | 1, 2 | 3) => {}
LL| 1| _ => {}
LL| | }
LL| 1| if is_true {
LL| 1| a = 2;
LL| 1| b = 2;
LL| 1| }
^0
LL| 1| match (a, b) {
LL| 0| (0 | 1, 2 | 3) => {}
LL| 1| _ => {}
LL| | }
LL| 1| if is_true {
LL| 1| a = 0;
LL| 1| b = 2;
LL| 1| }
^0
LL| 1| match (a, b) {
LL| 1| (0 | 1, 2 | 3) => {}
LL| 0| _ => {}
LL| | }
LL| 1|}