mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-27 09:14:20 +00:00
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);
|
||
|
}
|