]> git.lizzy.rs Git - rust.git/blob - tests/source/expr.rs
Merge pull request #1017 from marcusklaas/tweak-if-else
[rust.git] / tests / source / expr.rs
1 // rustfmt-wrap_comments: true
2 // Test expressions
3
4 fn foo() -> bool {
5     let boxed: Box<i32> = box   5;
6     let referenced = &5 ;
7
8     let very_long_variable_name = ( a +  first +   simple + test   );
9     let very_long_variable_name = (a + first + simple + test + AAAAAAAAAAAAA + BBBBBBBBBBBBBBBBB + b + c);
10
11     let is_internalxxxx = self.codemap.span_to_filename(s) == self.codemap.span_to_filename(m.inner);
12
13     let some_val = aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa * bbbb / (bbbbbb -
14         function_call(x, *very_long_pointer, y))
15     + 1000  ;
16
17 some_ridiculously_loooooooooooooooooooooong_function(10000 * 30000000000 + 40000 / 1002200000000
18                                                      - 50000 * sqrt(-1),
19                                                      trivial_value);
20     (((((((((aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa + a +
21              aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa + aaaaa)))))))))   ;
22
23     { for _ in 0..10 {} }
24
25     {{{{}}}}
26
27      if  1  + 2 > 0  { let result = 5; result } else { 4};
28
29     if  let   Some(x)  =  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa {
30         // Nothing
31     }
32
33     if  let   Some(x)  =  (aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa) {}
34
35     if let (some_very_large,
36             tuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuple) = 1
37         + 2 + 3 {
38     }
39
40     if let (some_very_large,
41             tuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuple) = 1111 + 2222 {}
42
43     if let (some_very_large, tuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuple) = 1
44  + 2 + 3 {
45     }
46
47     let test = if true { 5 } else { 3 };
48
49     if cond() {
50         something();
51     } else  if different_cond() {
52         something_else();
53     } else {
54         // Check subformatting
55         aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
56     }
57 }
58
59 fn bar() {
60     let range = (   111111111 + 333333333333333333 + 1111 +   400000000000000000) .. (2222 +  2333333333333333);
61
62     let another_range = 5..some_func( a , b /* comment */);
63
64     for _  in  1 ..{ call_forever(); }
65
66     syntactically_correct(loop { sup( '?'); }, if cond { 0 } else { 1 });
67
68     let third = ..10;
69     let infi_range = ..   ;
70     let foo = 1..;
71     let bar = 5 ;
72     let nonsense = (10 .. 0)..(0..10);
73
74     loop{if true {break}}
75
76     let x = (aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa &&
77              aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa,
78              a);
79 }
80
81 fn baz() {
82     unsafe    /*    {}{}{}{{{{}}   */   {
83         let foo = 1u32;
84     }
85
86     unsafe /* very looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong comment */ {}
87
88     unsafe // So this is a very long comment.
89            // Multi-line, too.
90            // Will it still format correctly?
91     {
92     }
93
94     unsafe {
95         // Regular unsafe block
96     }
97
98     unsafe {
99         foo()
100     }
101
102     unsafe {
103         foo();
104     }
105 }
106
107 // Test some empty blocks.
108 fn qux() {
109     {}
110     // FIXME this one could be done better.
111     { /* a block with a comment */ }
112     {
113
114     }
115     {
116         // A block with a comment.
117     }
118 }
119
120 fn issue227() {
121     {
122         let handler = box DocumentProgressHandler::new(addr, DocumentProgressTask::DOMContentLoaded);
123     }
124 }
125
126 fn issue184(source: &str) {
127     for c in source.chars() {
128         if index < 'a' {
129             continue;
130         }
131     }
132 }
133
134 fn arrays() {
135     let x = [0,
136          1,
137          2,
138          3,
139          4,
140          5,
141          6,
142          7,
143          8,
144          9,
145          0,
146          1,
147          2,
148          3,
149          4,
150          5,
151          6,
152          7,
153          8,
154          9,
155          0,
156          7,
157          8,
158          9,
159          0,
160          1,
161          2,
162          3,
163          4,
164          5,
165          6,
166          7,
167          8,
168          9,
169          0];
170
171     let y = [/* comment */ 1, 2 /* post comment */, 3];
172
173     let xy =    [ strukt  { test123: value_one_two_three_four, turbo: coolio(), } , /* comment  */   1 ];
174
175         let a =WeightedChoice::new(&mut [Weighted {
176             weight: x,
177             item: 0,
178         },
179                                   Weighted {
180             weight: 1,
181             item: 1,
182         },
183                                   Weighted {
184             weight: x,
185             item: 2,
186         },
187                                   Weighted {
188             weight: 1,
189             item: 3,
190         }]);
191
192     let z = [xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx, yyyyyyyyyyyyyyyyyyyyyyyyyyy, zzzzzzzzzzzzzzzzzz, q];
193
194     [ 1 +   3, 4 ,  5, 6, 7, 7, fncall::<Vec<_>>(3-1)]
195 }
196
197 fn returns() {
198     aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa && return;
199
200     return aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa;
201 }
202
203 fn addrof() {
204     &    mut(aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa+bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb);
205     &    (aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa+bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb);
206 }
207
208 fn casts() {
209     fn unpack(packed: u32) -> [u16; 2] {
210         [
211             (packed >> 16) as u16,
212             (packed >>  0) as u16,
213         ]
214     }
215
216     let some_trait_xxx = xxxxxxxxxxx + xxxxxxxxxxxxx
217         as SomeTraitXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX;
218     let slightly_longer_trait = yyyyyyyyy + yyyyyyyyyyy as SomeTraitYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY;
219 }
220
221 fn indices() {
222     let x = (aaaaaaaaaaaaaaaaaaaaaaaaaaaa+bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb+cccccccccccccccc) [ x + y + z ];
223     let y = (aaaaaaaaaaaaaaaaaaaaaaaaaaaa + bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb + cccccccccccccccc)[ xxxxx + yyyyy + zzzzz ];
224 }
225
226 fn repeats() {
227     let x = [aaaaaaaaaaaaaaaaaaaaaaaaaaaa+bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb+cccccccccccccccc; x + y + z ];
228     let y = [aaaaaaaaaaaaaaaaaaaaaaaaaaaa + bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb + cccccccccccccccc; xxxxx + yyyyy + zzzzz ];
229 }
230
231 fn blocks() {
232     if 1 + 1 == 2 {
233         println!("yay arithmetix!");
234     };
235 }
236
237 fn issue767() {
238     if false {
239         if false {
240         } else {
241             // A let binding here seems necessary to trigger it.
242             let _ = ();
243         }
244     } else if let false = false {
245     }
246 }
247
248 fn ranges() {
249     let x = aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa .. bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb;
250     let y = aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ... bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb;
251     let z = ... x ;
252
253     a ... b
254
255     // the expr below won't compile for some reason...
256     // let a = 0 ... ;
257 }
258
259 fn if_else() {
260   let exact = diff /
261             (if size == 0 {
262     1
263 } else {
264     size
265 });
266
267             let cx = tp1.x +
268                  any * radius *
269                  if anticlockwise {
270             1.0
271       } else {
272            -1.0
273        };
274 }