1 1| |#![allow(unused_assignments)]
2 2| |// expect-exit-status-1
4 4| 6|fn call(return_error: bool) -> Result<(),()> {
5 5| 6| if return_error {
12 12| 1|fn test1() -> Result<(),()> {
27 27| 1| call(/*return_error=*/ true)?;
28 28| 0| call(/*return_error=*/ false)?;
32 32| 5| call(/*return_error=*/ false)?;
41 40| 18| fn get_thing_2(&self, return_error: bool) -> Result<Thing2,()> {
42 41| 18| if return_error {
52 51| 17| fn call(&self, return_error: bool) -> Result<u32,()> {
53 52| 17| if return_error {
61 60| 1|fn test2() -> Result<(),()> {
62 61| 1| let thing1 = Thing1{};
77 76| 1| thing1.get_thing_2(/*err=*/ false)?.call(/*err=*/ true).expect_err("call should fail");
81 79| 1| get_thing_2(/*return_error=*/ false)
84 82| 1| call(/*return_error=*/ true)
87 85| 1| "call should fail"
89 87| 1| let val = thing1.get_thing_2(/*return_error=*/ true)?.call(/*return_error=*/ true)?;
91 88| 0| assert_eq!(val, 57);
92 89| 0| let val = thing1.get_thing_2(/*return_error=*/ true)?.call(/*return_error=*/ false)?;
93 90| 0| assert_eq!(val, 57);
97 94| 5| let val = thing1.get_thing_2(/*return_error=*/ false)?.call(/*return_error=*/ false)?;
99 95| 5| assert_eq!(val, 57);
100 96| 5| let val = thing1
101 97| 5| .get_thing_2(/*return_error=*/ false)?
103 98| 5| .call(/*return_error=*/ false)?;
105 99| 5| assert_eq!(val, 57);
106 100| 5| let val = thing1
107 101| 5| .get_thing_2(/*return_error=*/ false)
109 103| 5| .call(/*return_error=*/ false)
112 106| 5| assert_eq!(val, 57);
118 112| 1|fn main() -> Result<(),()> {
119 113| 1| test1().expect_err("test1 should fail");