1| |#![allow(unused_assignments, unused_variables, while_true)] 2| | 3| |// This test confirms that (1) unexecuted infinite loops are handled correctly by the 4| |// InstrumentCoverage MIR pass; and (2) Counter Expressions that subtract from zero can be dropped. 5| | 6| |struct DebugTest; 7| | 8| |impl std::fmt::Debug for DebugTest { 9| 1| fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result { 10| 1| if true { 11| 1| if false { 12| 0| while true { 13| 0| } 14| 1| } 15| 1| write!(f, "cool")?; ^0 16| 0| } else { 17| 0| } 18| | 19| 10| for i in 0..10 { 20| 10| if true { 21| 10| if false { 22| 0| while true {} 23| 10| } 24| 10| write!(f, "cool")?; ^0 25| 0| } else { 26| 0| } 27| | } 28| 1| Ok(()) 29| 1| } 30| |} 31| | 32| |struct DisplayTest; 33| | 34| |impl std::fmt::Display for DisplayTest { 35| 1| fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result { 36| 1| if false { 37| 0| } else { 38| 1| if false { 39| 0| while true {} 40| 1| } 41| 1| write!(f, "cool")?; ^0 42| | } 43| 10| for i in 0..10 { 44| 10| if false { 45| 0| } else { 46| 10| if false { 47| 0| while true {} 48| 10| } 49| 10| write!(f, "cool")?; ^0 50| | } 51| | } 52| 1| Ok(()) 53| 1| } 54| |} 55| | 56| 1|fn main() { 57| 1| let debug_test = DebugTest; 58| 1| println!("{:?}", debug_test); 59| 1| let display_test = DisplayTest; 60| 1| println!("{}", display_test); 61| 1|}