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