]> git.lizzy.rs Git - rust.git/blob - tests/target/match.rs
Fix large block comments
[rust.git] / tests / target / match.rs
1 // Match expressions.
2
3 fn foo() {
4     // A match expression.
5     match x {
6         // Some comment.
7         a => foo(),
8         b if 0 < 42 => foo(),
9         c => {
10             // Another comment.
11             // Comment.
12             an_expression;
13             foo()
14         }
15         // Perhaps this should introduce braces?
16         Foo(ref bar) =>
17             aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa,
18         Pattern1 | Pattern2 | Pattern3 => false,
19         Paternnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn |
20         Paternnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn => {
21             blah
22         }
23         Patternnnnnnnnnnnnnnnnnnn |
24         Patternnnnnnnnnnnnnnnnnnn |
25         Patternnnnnnnnnnnnnnnnnnn |
26         Patternnnnnnnnnnnnnnnnnnn => meh,
27
28         Patternnnnnnnnnnnnnnnnnnn |
29         Patternnnnnnnnnnnnnnnnnnn if looooooooooooooooooong_guard => meh,
30
31         Patternnnnnnnnnnnnnnnnnnnnnnnnn |
32         Patternnnnnnnnnnnnnnnnnnnnnnnnn if looooooooooooooooooooooooooooooooooooooooong_guard =>
33             meh,
34
35         // Test that earlier patterns can take the guard space
36         (aaaa,
37          bbbbb,
38          ccccccc,
39          aaaaa,
40          bbbbbbbb,
41          cccccc,
42          aaaa,
43          bbbbbbbb,
44          cccccc,
45          dddddd) |
46         Patternnnnnnnnnnnnnnnnnnnnnnnnn if loooooooooooooooooooooooooooooooooooooooooong_guard => {}
47
48         _ => {}
49         ast::PathParameters::AngleBracketedParameters(ref data) if data.lifetimes.len() > 0 ||
50                                                                    data.types.len() > 0 ||
51                                                                    data.bindings.len() > 0 => {}
52     }
53
54     let whatever = match something {
55         /// DOC COMMENT!
56         Some(_) => 42,
57         // Comment on an attribute.
58         #[an_attribute]
59         // Comment after an attribute.
60         None => 0,
61         #[rustfmt_skip]
62         Blurb     =>     {                  }
63     };
64 }
65
66 // Test that a match on an overflow line is laid out properly.
67 fn main() {
68     let sub_span =
69         match xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx {
70             Some(sub_span) => Some(sub_span),
71             None => sub_span,
72         };
73 }
74
75 // Test that one-line bodies align.
76 fn main() {
77     match r {
78         Variableeeeeeeeeeeeeeeeee => ("variable",
79                                       vec!["id", "name", "qualname", "value", "type", "scopeid"],
80                                       true,
81                                       true),
82         Enummmmmmmmmmmmmmmmmmmmm => ("enum",
83                                      vec!["id", "qualname", "scopeid", "value"],
84                                      true,
85                                      true),
86         Variantttttttttttttttttttttttt =>
87             ("variant",
88              vec!["id", "name", "qualname", "type", "value", "scopeid"],
89              true,
90              true),
91     }
92 }
93
94 fn matches() {
95     match 1 {
96         -1 => 10,
97         1 => 1, // foo
98         2 => 2,
99         // bar
100         3 => 3,
101         _ => 0, // baz
102     }
103 }
104
105 fn issue339() {
106     match a {
107         b => {}
108         c => {}
109         d => {}
110         e => {}
111         // collapsing here is safe
112         ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff => {}
113         // collapsing here exceeds line length
114         ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffg => {
115         }
116         h => {
117             // comment above block
118         }
119         i => {} // comment below block
120         j => {
121             // comment inside block
122         }
123         j2 => {
124             // comments inside...
125         } // ... and after
126         // TODO uncomment when vertical whitespace is handled better
127         // k => {
128         //
129         //     // comment with WS above
130         // }
131         // l => {
132         //     // comment with ws below
133         //
134         // }
135         m => {}
136         n => {}
137         o => {}
138         p => {
139             // Dont collapse me
140         }
141         q => {}
142         r => {}
143         s => 0, // s comment
144         // t comment
145         t => 1,
146         u => 2,
147         // TODO uncomment when block-support exists
148         // v => {
149         // } /* funky block
150         //    * comment */
151         // final comment
152     }
153 }
154
155 fn issue355() {
156     match mac {
157         a => println!("a", b),
158         b => vec![1, 2],
159         c => vec!(3; 4),
160         d => {
161             println!("a", b)
162         }
163         e => {
164             vec![1, 2]
165         }
166         f => {
167             vec!(3; 4)
168         }
169         h => println!("a", b), // h comment
170         i => vec![1, 2], // i comment
171         j => vec!(3; 4), // j comment
172         // k comment
173         k => println!("a", b),
174         // l comment
175         l => vec![1, 2],
176         // m comment
177         m => vec!(3; 4),
178         // Rewrite splits macro
179         nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn =>
180             println!("a", b),
181         // Rewrite splits macro
182         oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo =>
183             vec![1, 2],
184         // Macro support fails to recognise this macro as splitable
185         // We push the whole expr to a new line, TODO split this macro as well
186         pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp =>
187             vec!(3; 4),
188         // q, r and s: Rewrite splits match arm
189         qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq =>
190             println!("a", b),
191         rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr =>
192             vec![1, 2],
193         ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss =>
194             vec!(3; 4),
195         // Funky bracketing styles
196         t => println!{"a", b},
197         u => vec![1, 2],
198         v => vec!{3; 4},
199         w => println!["a", b],
200         x => vec![1, 2],
201         y => vec![3; 4],
202         // Brackets with comments
203         tc => println!{"a", b}, // comment
204         uc => vec![1, 2], // comment
205         vc => vec!{3; 4}, // comment
206         wc => println!["a", b], // comment
207         xc => vec![1, 2], // comment
208         yc => vec![3; 4], // comment
209         yd => looooooooooooooooooooooooooooooooooooooooooooooooooooooooong_func(aaaaaaaaaa,
210                                                                                 bbbbbbbbbb,
211                                                                                 cccccccccc,
212                                                                                 dddddddddd),
213     }
214 }
215
216 fn issue280() {
217     {
218         match x {
219             CompressionMode::DiscardNewline | CompressionMode::CompressWhitespaceNewline =>
220                 ch == '\n',
221             ast::ItemConst(ref typ, ref expr) =>
222                 self.process_static_or_const_item(item, &typ, &expr),
223         }
224     }
225 }
226
227 fn issue383() {
228     match resolution.last_private {
229         LastImport{..} => false,
230         _ => true,
231     }
232 }