]> git.lizzy.rs Git - rust.git/blob - tests/source/expr.rs
Use max width for function decls, etc.
[rust.git] / tests / source / expr.rs
1 // Test expressions
2
3 fn foo() -> bool {
4     let boxed: Box<i32> = box   5;
5     let referenced = &5 ;
6
7     let very_long_variable_name = ( a +  first +   simple + test   );
8     let very_long_variable_name = (a + first + simple + test + AAAAAAAAAAAAA + BBBBBBBBBBBBBBBBB + b + c);
9
10     let is_internalxxxx = self.codemap.span_to_filename(s) == self.codemap.span_to_filename(m.inner);
11
12     let some_val = aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa * bbbb / (bbbbbb -
13         function_call(x, *very_long_pointer, y))
14     + 1000  ;
15
16 some_ridiculously_loooooooooooooooooooooong_function(10000 * 30000000000 + 40000 / 1002200000000
17                                                      - 50000 * sqrt(-1),
18                                                      trivial_value);
19     (((((((((aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa + a +
20              aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa + aaaaa)))))))))   ;
21
22     { for _ in 0..10 {} }
23
24     {{{{}}}}
25
26      if  1  + 2 > 0  { let result = 5; result } else { 4};
27
28     if  let   Some(x)  =  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa {
29         // Nothing
30     }
31
32     if  let   Some(x)  =  (aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa) {}
33
34     if let (some_very_large,
35             tuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuple) = 1
36         + 2 + 3 {
37     }
38
39     if let (some_very_large,
40             tuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuple) = 1111 + 2222 {}
41
42     if let (some_very_large, tuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuple) = 1
43  + 2 + 3 {
44     }
45
46     let test = if true { 5 } else { 3 };
47
48     if cond() {
49         something();
50     } else  if different_cond() {
51         something_else();
52     } else {
53         // Check subformatting
54         aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
55     }
56 }
57
58 fn bar() {
59     let range = (   111111111 + 333333333333333333 + 1111 +   400000000000000000) .. (2222 +  2333333333333333);
60
61     let another_range = 5..some_func( a , b /* comment */);
62
63     for _  in  1 ..{ call_forever(); }
64
65     syntactically_correct(loop { sup( '?'); }, if cond { 0 } else { 1 });
66
67     let third = ..10;
68     let infi_range = ..   ;
69     let foo = 1..;
70     let bar = 5 ;
71     let nonsense = (10 .. 0)..(0..10);
72
73     loop{if true {break}}
74
75     let x = (aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa &&
76              aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa,
77              a);
78 }
79
80 fn baz() {
81     unsafe    /*    {}{}{}{{{{}}   */   {
82         let foo = 1u32;
83     }
84
85     unsafe /* very looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong comment */ {}
86
87     unsafe // So this is a very long comment.
88            // Multi-line, too.
89            // Will it still format correctly?
90     {
91     }
92
93     unsafe {
94         // Regular unsafe block
95     }
96
97     unsafe {
98         foo()
99     }
100
101     unsafe {
102         foo();
103     }
104 }
105
106 // Test some empty blocks.
107 fn qux() {
108     {}
109     // FIXME this one could be done better.
110     { /* a block with a comment */ }
111     {
112
113     }
114     {
115         // A block with a comment.
116     }
117 }
118
119 fn issue227() {
120     {
121         let handler = box DocumentProgressHandler::new(addr, DocumentProgressTask::DOMContentLoaded);
122     }
123 }
124
125 fn issue184(source: &str) {
126     for c in source.chars() {
127         if index < 'a' {
128             continue;
129         }
130     }
131 }
132
133 fn matches() {
134     match 1 {
135         1 => 1, // foo
136         2 => 2,
137         // bar
138         3 => 3,
139         _ => 0 // baz
140     }
141 }
142
143 fn issue339() {
144     match a {
145         b => {}
146         c => { }
147         d => {
148         }
149         e => {
150
151
152
153         }
154         // collapsing here is safe
155         ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff => {
156         }
157         // collapsing here exceeds line length
158         ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffg => {
159         }
160         h => { // comment above block
161         }
162         i => {
163         } // comment below block
164         j => {
165             // comment inside block
166         }
167         j2 => {
168             // comments inside...
169         } // ... and after
170         // TODO uncomment when vertical whitespace is handled better
171         // k => {
172         //
173         //     // comment with WS above
174         // }
175         // l => {
176         //     // comment with ws below
177         //     
178         // }
179         m => {
180         } n => { } o =>
181         {
182
183         }
184         p => { // Dont collapse me
185         } q => { } r =>
186         {
187
188         }
189         s => 0, // s comment
190         // t comment
191         t => 1,
192         u => 2,
193         // TODO uncomment when block-support exists
194         // v => {
195         // } /* funky block
196         //    * comment */
197         // final comment
198     }
199 }
200
201 fn issue355() {
202     match mac {
203         a => println!("a", b),
204         b => vec!(1, 2),
205         c => vec!(3; 4),
206         d => {
207             println!("a", b)
208         }
209         e => {
210             vec!(1, 2)
211         }
212         f => {
213             vec!(3; 4)
214         }
215         h => println!("a", b), // h comment
216         i => vec!(1, 2), // i comment
217         j => vec!(3; 4), // j comment
218         // k comment
219         k => println!("a", b),
220         // l comment
221         l => vec!(1, 2),
222         // m comment
223         m => vec!(3; 4),
224         // Rewrite splits macro
225         nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn => println!("a", b),
226         // Rewrite splits macro
227         oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo => vec!(1, 2),
228         // Macro support fails to recognise this macro as splitable
229         // We push the whole expr to a new line, TODO split this macro as well
230         pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp => vec!(3; 4),
231         // q, r and s: Rewrite splits match arm
232         qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq => println!("a", b),
233         rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr => vec!(1, 2),
234         ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss => vec!(3; 4),
235         // Funky bracketing styles
236         t =>      println!{"a", b},
237         u => vec!{1, 2},
238         v => vec!{3; 4},
239         w => println!["a", b],
240         x =>      vec![1, 2],
241         y =>vec![3; 4],
242         // Brackets with comments
243         tc => println!{"a", b}, // comment
244         uc => vec!{1, 2}, // comment
245         vc =>vec!{3; 4}, // comment
246         wc =>println!["a", b], // comment
247         xc => vec![1,2], // comment
248         yc =>        vec![3; 4], // comment
249     }
250 }
251
252 fn arrays() {
253     let x = [0,
254          1,
255          2,
256          3,
257          4,
258          5,
259          6,
260          7,
261          8,
262          9,
263          0,
264          1,
265          2,
266          3,
267          4,
268          5,
269          6,
270          7,
271          8,
272          9,
273          0,
274          7,
275          8,
276          9,
277          0,
278          1,
279          2,
280          3,
281          4,
282          5,
283          6,
284          7,
285          8,
286          9,
287          0];
288
289     let y = [/* comment */ 1, 2 /* post comment */, 3];
290
291     let z = [xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx, yyyyyyyyyyyyyyyyyyyyyyyyyyy, zzzzzzzzzzzzzzzzzz, q];
292
293     [ 1 +   3, 4 ,  5, 6, 7, 7, fncall::<Vec<_>>(3-1)]
294 }
295
296 fn returns() {
297     aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa && return;
298
299     return aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa;
300 }
301
302 fn addrof() {
303     &    mut(aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa+bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb);
304     &    (aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa+bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb);
305 }