]> git.lizzy.rs Git - rust.git/blob - tests/ui/option_option.rs
Auto merge of #4478 - tsurai:master, r=flip1995
[rust.git] / tests / ui / option_option.rs
1 fn input(_: Option<Option<u8>>) {}
2
3 fn output() -> Option<Option<u8>> {
4     None
5 }
6
7 fn output_nested() -> Vec<Option<Option<u8>>> {
8     vec![None]
9 }
10
11 // The lint only generates one warning for this
12 fn output_nested_nested() -> Option<Option<Option<u8>>> {
13     None
14 }
15
16 struct Struct {
17     x: Option<Option<u8>>,
18 }
19
20 impl Struct {
21     fn struct_fn() -> Option<Option<u8>> {
22         None
23     }
24 }
25
26 trait Trait {
27     fn trait_fn() -> Option<Option<u8>>;
28 }
29
30 enum Enum {
31     Tuple(Option<Option<u8>>),
32     Struct { x: Option<Option<u8>> },
33 }
34
35 // The lint allows this
36 type OptionOption = Option<Option<u32>>;
37
38 // The lint allows this
39 fn output_type_alias() -> OptionOption {
40     None
41 }
42
43 // The line allows this
44 impl Trait for Struct {
45     fn trait_fn() -> Option<Option<u8>> {
46         None
47     }
48 }
49
50 fn main() {
51     input(None);
52     output();
53     output_nested();
54
55     // The lint allows this
56     let local: Option<Option<u8>> = None;
57
58     // The lint allows this
59     let expr = Some(Some(true));
60 }