rust/tests/run-coverage/try_error_result.coverage

126 lines
4.6 KiB
Plaintext

1| |#![allow(unused_assignments)]
2| |// failure-status: 1
3| |
4| 6|fn call(return_error: bool) -> Result<(),()> {
5| 6| if return_error {
6| 1| Err(())
7| | } else {
8| 5| Ok(())
9| | }
10| 6|}
11| |
12| 1|fn test1() -> Result<(),()> {
13| 1| let mut
14| 1| countdown = 10
15| | ;
16| | for
17| | _
18| | in
19| 6| 0..10
20| | {
21| 6| countdown
22| 6| -= 1
23| 6| ;
24| 6| if
25| 6| countdown < 5
26| | {
27| 1| call(/*return_error=*/ true)?;
28| 0| call(/*return_error=*/ false)?;
29| | }
30| | else
31| | {
32| 5| call(/*return_error=*/ false)?;
^0
33| | }
34| | }
35| 0| Ok(())
36| 1|}
37| |
38| |struct Thing1;
39| |impl Thing1 {
40| 18| fn get_thing_2(&self, return_error: bool) -> Result<Thing2,()> {
41| 18| if return_error {
42| 1| Err(())
43| | } else {
44| 17| Ok(Thing2{})
45| | }
46| 18| }
47| |}
48| |
49| |struct Thing2;
50| |impl Thing2 {
51| 17| fn call(&self, return_error: bool) -> Result<u32,()> {
52| 17| if return_error {
53| 2| Err(())
54| | } else {
55| 15| Ok(57)
56| | }
57| 17| }
58| |}
59| |
60| 1|fn test2() -> Result<(),()> {
61| 1| let thing1 = Thing1{};
62| 1| let mut
63| 1| countdown = 10
64| | ;
65| | for
66| | _
67| | in
68| 6| 0..10
69| | {
70| 6| countdown
71| 6| -= 1
72| 6| ;
73| 6| if
74| 6| countdown < 5
75| | {
76| 1| thing1.get_thing_2(/*err=*/ false)?.call(/*err=*/ true).expect_err("call should fail");
^0
77| 1| thing1
78| 1| .
79| 1| get_thing_2(/*return_error=*/ false)
80| 0| ?
81| | .
82| 1| call(/*return_error=*/ true)
83| 1| .
84| 1| expect_err(
85| 1| "call should fail"
86| 1| );
87| 1| let val = thing1.get_thing_2(/*return_error=*/ true)?.call(/*return_error=*/ true)?;
^0 ^0 ^0
88| 0| assert_eq!(val, 57);
89| 0| let val = thing1.get_thing_2(/*return_error=*/ true)?.call(/*return_error=*/ false)?;
90| 0| assert_eq!(val, 57);
91| | }
92| | else
93| | {
94| 5| let val = thing1.get_thing_2(/*return_error=*/ false)?.call(/*return_error=*/ false)?;
^0 ^0
95| 5| assert_eq!(val, 57);
96| 5| let val = thing1
97| 5| .get_thing_2(/*return_error=*/ false)?
^0
98| 5| .call(/*return_error=*/ false)?;
^0
99| 5| assert_eq!(val, 57);
100| 5| let val = thing1
101| 5| .get_thing_2(/*return_error=*/ false)
102| 0| ?
103| 5| .call(/*return_error=*/ false)
104| 0| ?
105| | ;
106| 5| assert_eq!(val, 57);
107| | }
108| | }
109| 0| Ok(())
110| 1|}
111| |
112| 1|fn main() -> Result<(),()> {
113| 1| test1().expect_err("test1 should fail");
114| 1| test2()
115| 1| ?
116| | ;
117| 0| Ok(())
118| 1|}