3141177995
The output of these tests is too complicated to comfortably verify by hand, but we can still use them to observe changes to the underlying mappings produced by codegen/LLVM. If these tests fail due to non-coverage changes (e.g. in HIR-to-MIR lowering or MIR optimizations), it should usually be OK to just `--bless` them, as long as the `run-coverage` test suite still works.
61 lines
1.4 KiB
Rust
61 lines
1.4 KiB
Rust
#![allow(unused_assignments, unused_variables, while_true)]
|
|
|
|
// This test confirms that (1) unexecuted infinite loops are handled correctly by the
|
|
// InstrumentCoverage MIR pass; and (2) Counter Expressions that subtract from zero can be dropped.
|
|
|
|
struct DebugTest;
|
|
|
|
impl std::fmt::Debug for DebugTest {
|
|
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
|
|
if true {
|
|
if false {
|
|
while true {}
|
|
}
|
|
write!(f, "cool")?;
|
|
} else {
|
|
}
|
|
|
|
for i in 0..10 {
|
|
if true {
|
|
if false {
|
|
while true {}
|
|
}
|
|
write!(f, "cool")?;
|
|
} else {
|
|
}
|
|
}
|
|
Ok(())
|
|
}
|
|
}
|
|
|
|
struct DisplayTest;
|
|
|
|
impl std::fmt::Display for DisplayTest {
|
|
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
|
|
if false {
|
|
} else {
|
|
if false {
|
|
while true {}
|
|
}
|
|
write!(f, "cool")?;
|
|
}
|
|
for i in 0..10 {
|
|
if false {
|
|
} else {
|
|
if false {
|
|
while true {}
|
|
}
|
|
write!(f, "cool")?;
|
|
}
|
|
}
|
|
Ok(())
|
|
}
|
|
}
|
|
|
|
fn main() {
|
|
let debug_test = DebugTest;
|
|
println!("{:?}", debug_test);
|
|
let display_test = DisplayTest;
|
|
println!("{}", display_test);
|
|
}
|