   LL|       |#![allow(unused_assignments)]
   LL|       |//@ failure-status: 101
   LL|       |
   LL|      4|fn might_fail_assert(one_plus_one: u32) {
   LL|      4|    println!("does 1 + 1 = {}?", one_plus_one);
   LL|      4|    assert_eq!(1 + 1, one_plus_one, "the argument was wrong");
   LL|      3|}
   LL|       |
   LL|      1|fn main() -> Result<(), u8> {
   LL|      1|    let mut countdown = 10;
   LL|     10|    while countdown > 0 {
   LL|      9|        if countdown == 1 {
   LL|      1|            might_fail_assert(3);
   LL|      8|        } else if countdown < 5 {
   LL|      3|            might_fail_assert(2);
   LL|      5|        }
   LL|      9|        countdown -= 1;
   LL|       |    }
   LL|      1|    Ok(())
   LL|      1|}
   LL|       |
   LL|       |// Notes:
   LL|       |//   1. Compare this program and its coverage results to those of the very similar test
   LL|       |//      `panic_unwind.rs`, and similar tests `abort.rs` and `try_error_result.rs`.
   LL|       |//   2. This test confirms the coverage generated when a program passes or fails an `assert!()` or
   LL|       |//      related `assert_*!()` macro.
   LL|       |//   3. Notably, the `assert` macros *do not* generate `TerminatorKind::Assert`. The macros produce
   LL|       |//      conditional expressions, `TerminatorKind::SwitchInt` branches, and a possible call to
   LL|       |//      `begin_panic_fmt()` (that begins a panic unwind, if the assertion test fails).
   LL|       |//   4. `TerminatoKind::Assert` is, however, also present in the MIR generated for this test
   LL|       |//      (and in many other coverage tests). The `Assert` terminator is typically generated by the
   LL|       |//      Rust compiler to check for runtime failures, such as numeric overflows.

