summaryrefslogtreecommitdiffstats
path: root/tests/run-coverage/while_early_ret.coverage
blob: 2ce94e0131d1c5898b082c2890f47a36a7ada241 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
    1|       |#![allow(unused_assignments)]
    2|       |// failure-status: 1
    3|       |
    4|      1|fn main() -> Result<(),u8> {
    5|      1|    let mut countdown = 10;
    6|       |    while
    7|      7|        countdown
    8|      7|            >
    9|      7|        0
   10|       |    {
   11|       |        if
   12|      7|            countdown
   13|      7|                <
   14|      7|            5
   15|       |        {
   16|       |            return
   17|       |                if
   18|      1|                    countdown
   19|      1|                        >
   20|      1|                    8
   21|       |                {
   22|      0|                    Ok(())
   23|       |                }
   24|       |                else
   25|       |                {
   26|      1|                    Err(1)
   27|       |                }
   28|       |                ;
   29|      6|        }
   30|      6|        countdown
   31|      6|            -=
   32|      6|        1
   33|       |        ;
   34|       |    }
   35|      0|    Ok(())
   36|      1|}
   37|       |
   38|       |// ISSUE(77553): Originally, this test had `Err(1)` on line 22 (instead of `Ok(())`) and
   39|       |// `std::process::exit(2)` on line 26 (instead of `Err(1)`); and this worked as expected on Linux
   40|       |// and MacOS. But on Windows (MSVC, at least), the call to `std::process::exit()` exits the program
   41|       |// without saving the InstrProf coverage counters. The use of `std::process:exit()` is not critical
   42|       |// to the coverage test for early returns, but this is a limitation that should be fixed.