    1|       |#![allow(unused_assignments, unused_variables)]
    2|       |
    3|       |fn main() {
    4|       |    // Initialize test constants in a way that cannot be determined at compile time, to ensure
    5|       |    // rustc and LLVM cannot optimize out statements (or coverage counters) downstream from
    6|       |    // dependent conditions.
    7|      1|    let is_true = std::env::args().len() == 1;
    8|      1|
    9|      1|    let mut countdown = 0;
   10|      1|    if is_true {
   11|      1|        countdown = 10;
   12|      1|    }
   13|       |
   14|       |    mod in_mod {
   15|       |        const IN_MOD_CONST: u32 = 1000;
   16|       |    }
   17|       |
   18|       |    fn in_func(a: u32) {
   19|      3|        let b = 1;
   20|      3|        let c = a + b;
   21|      3|        println!("c = {}", c)
   22|      3|    }
   23|       |
   24|       |    struct InStruct {
   25|       |        in_struct_field: u32,
   26|       |    }
   27|       |
   28|       |    const IN_CONST: u32 = 1234;
   29|       |
   30|       |    trait InTrait {
   31|       |        fn trait_func(&mut self, incr: u32);
   32|       |
   33|      1|        fn default_trait_func(&mut self) {
   34|      1|            in_func(IN_CONST);
   35|      1|            self.trait_func(IN_CONST);
   36|      1|        }
   37|       |    }
   38|       |
   39|       |    impl InTrait for InStruct {
   40|       |        fn trait_func(&mut self, incr: u32) {
   41|      1|            self.in_struct_field += incr;
   42|      1|            in_func(self.in_struct_field);
   43|      1|        }
   44|       |    }
   45|       |
   46|       |    type InType = String;
   47|       |
   48|      1|    if is_true {
   49|      1|        in_func(countdown);
   50|      1|    }
   51|       |
   52|      1|    let mut val = InStruct {
   53|      1|        in_struct_field: 101,
   54|      1|    };
   55|      1|
   56|      1|    val.default_trait_func();
   57|      1|}

