mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-23 07:14:28 +00:00
72b721f48e
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`.)
49 lines
1.6 KiB
Plaintext
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|}
|
|
|