]> git.lizzy.rs Git - rust.git/blob - src/test/run-pass/issue-41888.rs
Remove the in-tree `flate` crate
[rust.git] / src / test / run-pass / issue-41888.rs
1 // Copyright 2017 The Rust Project Developers. See the COPYRIGHT
2 // file at the top-level directory of this distribution and at
3 // http://rust-lang.org/COPYRIGHT.
4 //
5 // Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
6 // http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
7 // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
8 // option. This file may not be copied, modified, or distributed
9 // except according to those terms.
10
11 fn main() { let _ = g(Some(E::F(K))); }
12
13 type R = Result<(), ()>;
14 struct K;
15
16 enum E {
17     F(K), // must not be built-in type
18     #[allow(dead_code)]
19     G(Box<E>, Box<E>),
20 }
21
22 fn translate(x: R) -> R { x }
23
24 fn g(mut status: Option<E>) -> R {
25     loop {
26         match status {
27             Some(infix_or_postfix) => match infix_or_postfix {
28                 E::F(_op) => { // <- must be captured by value
29                     match Ok(()) {
30                         Err(err) => return Err(err),
31                         Ok(_) => {},
32                     };
33                 }
34                 _ => (),
35             },
36             _ => match translate(Err(())) {
37                 Err(err) => return Err(err),
38                 Ok(_) => {},
39             }
40         }
41         status = None;
42     }
43 }