LL| |#![allow(unused_assignments, unused_variables, while_true)] | |
LL| | | |
LL| |// This test confirms that (1) unexecuted infinite loops are handled correctly by the | |
LL| |// InstrumentCoverage MIR pass; and (2) Counter Expressions that subtract from zero can be dropped. | |
LL| | | |
LL| |struct DebugTest; | |
LL| | | |
LL| |impl std::fmt::Debug for DebugTest { | |
LL| 1| fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result { | |
LL| 1| if true { | |
LL| 1| if false { | |
LL| 0| while true {} | |
LL| 1| } | |
LL| 1| write!(f, "cool")?; | |
^0 | |
LL| 0| } else { | |
LL| 0| } | |
LL| | | |
LL| 11| for i in 0..10 { | |
^10 | |
LL| 10| if true { | |
LL| 10| if false { | |
LL| 0| while true {} | |
LL| 10| } | |
LL| 10| write!(f, "cool")?; | |
^0 | |
LL| 0| } else { | |
LL| 0| } | |
LL| | } | |
LL| 1| Ok(()) | |
LL| 1| } | |
LL| |} | |
LL| | | |
LL| |struct DisplayTest; | |
LL| | | |
LL| |impl std::fmt::Display for DisplayTest { | |
LL| 1| fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result { | |
LL| 1| if false { | |
LL| 0| } else { | |
LL| 1| if false { | |
LL| 0| while true {} | |
LL| 1| } | |
LL| 1| write!(f, "cool")?; | |
^0 | |
LL| | } | |
LL| 11| for i in 0..10 { | |
^10 | |
LL| 10| if false { | |
LL| 0| } else { | |
LL| 10| if false { | |
LL| 0| while true {} | |
LL| 10| } | |
LL| 10| write!(f, "cool")?; | |
^0 | |
LL| | } | |
LL| | } | |
LL| 1| Ok(()) | |
LL| 1| } | |
LL| |} | |
LL| | | |
LL| 1|fn main() { | |
LL| 1| let debug_test = DebugTest; | |
LL| 1| println!("{:?}", debug_test); | |
LL| 1| let display_test = DisplayTest; | |
LL| 1| println!("{}", display_test); | |
LL| 1|} | |