    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|     11|        for i in 0..10 {
                          ^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|     11|        for i in 0..10 {
                          ^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|}

