]> git.lizzy.rs Git - rust.git/blob - src/test/ui/issues/issue-41888.rs
Rollup merge of #60492 - acrrd:issues/54054_chain, r=SimonSapin
[rust.git] / src / test / ui / issues / issue-41888.rs
1 // run-pass
2 fn main() { let _ = g(Some(E::F(K))); }
3
4 type R = Result<(), ()>;
5 struct K;
6
7 enum E {
8     F(K), // must not be built-in type
9     #[allow(dead_code)]
10     G(Box<E>, Box<E>),
11 }
12
13 fn translate(x: R) -> R { x }
14
15 fn g(mut status: Option<E>) -> R {
16     loop {
17         match status {
18             Some(infix_or_postfix) => match infix_or_postfix {
19                 E::F(_op) => { // <- must be captured by value
20                     match Ok(()) {
21                         Err(err) => return Err(err),
22                         Ok(_) => {},
23                     };
24                 }
25                 _ => (),
26             },
27             _ => match translate(Err(())) {
28                 Err(err) => return Err(err),
29                 Ok(_) => {},
30             }
31         }
32         status = None;
33     }
34 }