rust/tests/target/expr.rs

398 lines
9.6 KiB
Rust
Raw Normal View History

// rustfmt-normalize_comments: true
// rustfmt-wrap_comments: true
// Test expressions
fn foo() -> bool {
2015-07-23 23:08:41 +02:00
let boxed: Box<i32> = box 5;
let referenced = &5;
let very_long_variable_name = (a + first + simple + test);
2017-07-05 11:31:37 +02:00
let very_long_variable_name =
(a + first + simple + test + AAAAAAAAAAAAA + BBBBBBBBBBBBBBBBB + b + c);
2017-07-05 11:31:37 +02:00
let is_internalxxxx =
self.codemap.span_to_filename(s) == self.codemap.span_to_filename(m.inner);
2015-07-24 15:29:04 +02:00
2017-09-15 05:20:58 +02:00
let some_val = aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa * bbbb
/ (bbbbbb - function_call(x, *very_long_pointer, y)) + 1000;
2017-06-12 06:01:41 +02:00
some_ridiculously_loooooooooooooooooooooong_function(
10000 * 30000000000 + 40000 / 1002200000000 - 50000 * sqrt(-1),
trivial_value,
);
2017-09-15 05:20:58 +02:00
(((((((((aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+ a
+ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+ aaaaa)))))))));
2015-07-19 23:42:54 +02:00
2015-07-20 23:29:25 +02:00
{
2015-08-16 06:13:55 +02:00
for _ in 0..10 {}
2015-07-20 23:29:25 +02:00
}
{
{
{
2015-08-16 06:13:55 +02:00
{}
2015-07-20 23:29:25 +02:00
}
}
}
2015-07-19 23:42:54 +02:00
if 1 + 2 > 0 {
let result = 5;
result
} else {
4
};
2015-07-19 23:42:54 +02:00
2015-07-19 22:25:44 +02:00
if let Some(x) = aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa {
// Nothing
}
2017-07-09 19:25:26 +02:00
if let Some(x) =
(aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa)
2017-06-12 06:01:41 +02:00
{}
2015-07-19 22:25:44 +02:00
if let (
some_very_large,
tuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuple,
) = 1 + 2 + 3
{}
2015-07-19 22:25:44 +02:00
if let (
some_very_large,
tuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuple,
) = 1111 + 2222
2017-06-12 06:01:41 +02:00
{}
2015-07-19 22:25:44 +02:00
if let (
some_very_large,
tuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuple,
) = 1 + 2 + 3
2017-06-12 06:01:41 +02:00
{}
2015-07-20 23:29:25 +02:00
if let ast::ItemKind::Trait(_, unsafety, ref generics, ref type_param_bounds, ref trait_items) =
item.node
{
// nothing
}
let test = if true { 5 } else { 3 };
2015-07-19 23:42:54 +02:00
if cond() {
something();
} else if different_cond() {
something_else();
} else {
// Check subformatting
2017-09-15 05:20:58 +02:00
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
2015-07-19 23:42:54 +02:00
}
}
2015-07-20 23:29:25 +02:00
fn bar() {
2017-07-05 11:31:37 +02:00
let range =
(111111111 + 333333333333333333 + 1111 + 400000000000000000)..(2222 + 2333333333333333);
2015-07-20 23:29:25 +02:00
let another_range = 5..some_func(a, b /* comment */);
for _ in 1.. {
call_forever();
}
2017-06-12 06:01:41 +02:00
syntactically_correct(
loop {
sup('?');
},
if cond { 0 } else { 1 },
);
2015-07-20 23:29:25 +02:00
let third = ..10;
let infi_range = ..;
let foo = 1..;
let bar = 5;
let nonsense = (10..0)..(0..10);
2015-07-25 23:28:31 +02:00
2015-09-03 20:15:24 +02:00
loop {
if true {
2015-10-13 08:17:51 +02:00
break;
2015-09-03 20:15:24 +02:00
}
}
2017-06-12 06:01:41 +02:00
let x = (
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa && aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa,
a,
);
}
2015-08-01 14:22:31 +02:00
fn baz() {
unsafe /* {}{}{}{{{{}} */ {
let foo = 1u32;
}
unsafe /* very looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong
* comment */ {
}
unsafe /* So this is a very long comment.
* Multi-line, too.
* Will it still format correctly? */ {
}
unsafe {
// Regular unsafe block
}
2015-09-05 08:26:28 +02:00
unsafe { foo() }
unsafe {
foo();
}
// #2289
let identifier_0 = unsafe { this_is_58_chars_long_and_line_is_93_chars_long_xxxxxxxxxx };
let identifier_1 = unsafe { this_is_59_chars_long_and_line_is_94_chars_long_xxxxxxxxxxx };
let identifier_2 = unsafe { this_is_65_chars_long_and_line_is_100_chars_long_xxxxxxxxxxxxxxxx };
let identifier_3 =
unsafe { this_is_66_chars_long_and_line_is_101_chars_long_xxxxxxxxxxxxxxxxx };
2015-08-01 14:22:31 +02:00
}
2015-08-16 06:13:55 +02:00
// Test some empty blocks.
fn qux() {
{}
// FIXME this one could be done better.
{ /* a block with a comment */ }
{}
2015-08-16 06:13:55 +02:00
{
// A block with a comment.
}
}
fn issue227() {
{
2017-06-12 06:01:41 +02:00
let handler =
box DocumentProgressHandler::new(addr, DocumentProgressTask::DOMContentLoaded);
}
}
fn issue184(source: &str) {
for c in source.chars() {
if index < 'a' {
continue;
}
}
}
2015-09-12 00:06:17 +02:00
fn arrays() {
2017-06-12 06:01:41 +02:00
let x = [
2017-12-04 04:05:16 +01:00
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 7, 8, 9, 0, 1, 2, 3, 4, 5,
6, 7, 8, 9, 0,
2017-06-12 06:01:41 +02:00
];
2017-08-27 07:41:30 +02:00
let y = [/* comment */ 1, 2 /* post comment */, 3];
2017-06-12 06:01:41 +02:00
let xy = [
strukt {
test123: value_one_two_three_four,
turbo: coolio(),
},
// comment
1,
];
2017-06-29 04:01:22 +02:00
let a = WeightedChoice::new(&mut [
Weighted {
weightweight: x,
item: 0,
},
Weighted {
weightweight: 1,
item: 1,
},
Weighted {
weightweight: x,
item: 2,
},
Weighted {
weightweight: 1,
item: 3,
},
]);
2017-06-12 06:01:41 +02:00
let z = [
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx,
yyyyyyyyyyyyyyyyyyyyyyyyyyy,
zzzzzzzzzzzzzzzzzz,
q,
];
2015-09-12 00:06:17 +02:00
[1 + 3, 4, 5, 6, 7, 7, fncall::<Vec<_>>(3 - 1)]
}
fn returns() {
2017-09-15 05:20:58 +02:00
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
&& return;
2017-09-15 05:20:58 +02:00
return aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa;
}
fn addrof() {
2017-09-15 05:20:58 +02:00
&mut (aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+ bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb);
&(aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+ bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb);
}
2015-10-02 11:31:40 +02:00
fn casts() {
fn unpack(packed: u32) -> [u16; 2] {
[(packed >> 16) as u16, (packed >> 0) as u16]
}
let some_trait_xxx = xxxxxxxxxxx + xxxxxxxxxxxxx as SomeTraitXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX;
2017-07-05 11:31:37 +02:00
let slightly_longer_trait =
yyyyyyyyy + yyyyyyyyyyy as SomeTraitYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY;
2015-10-02 11:31:40 +02:00
}
2015-10-02 11:47:03 +02:00
fn indices() {
2017-01-11 00:06:23 +01:00
let x = (aaaaaaaaaaaaaaaaaaaaaaaaaaaa + bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb + cccccccccccccccc)
2017-02-21 04:59:14 +01:00
[x + y + z];
2017-01-11 00:06:23 +01:00
let y = (aaaaaaaaaaaaaaaaaaaaaaaaaaaa + bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb + cccccccccccccccc)
2017-02-21 04:59:14 +01:00
[xxxxx + yyyyy + zzzzz];
let z = xxxxxxxxxx
.x()
.y()
.zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz()[aaaaa];
let z = xxxxxxxxxx
.x()
.y()
.zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz()
[aaaaa];
2015-10-02 11:47:03 +02:00
}
2015-10-02 12:00:28 +02:00
fn repeats() {
2017-01-11 00:06:23 +01:00
let x = [aaaaaaaaaaaaaaaaaaaaaaaaaaaa + bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb + cccccccccccccccc;
2017-06-12 06:01:41 +02:00
x + y + z];
2017-01-11 00:06:23 +01:00
let y = [aaaaaaaaaaaaaaaaaaaaaaaaaaaa + bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb + cccccccccccccccc;
2017-06-12 06:01:41 +02:00
xxxxx + yyyyy + zzzzz];
2015-10-02 12:00:28 +02:00
}
fn blocks() {
if 1 + 1 == 2 {
println!("yay arithmetix!");
};
}
2016-01-12 21:13:59 +01:00
fn issue767() {
if false {
if false {
} else {
// A let binding here seems necessary to trigger it.
let _ = ();
}
} else if let false = false {
}
}
2016-03-29 23:46:55 +02:00
fn ranges() {
let x = aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb;
2017-07-05 11:31:37 +02:00
let y =
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..=bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb;
let z = ..=x;
2016-03-29 23:46:55 +02:00
// #1766
let x = [0. ..10.0];
let x = [0. ..=10.0];
a..=b
2016-03-29 23:46:55 +02:00
// the expr below won't compile because inclusive ranges need a defined end
// let a = 0 ..= ;
2016-03-29 23:46:55 +02:00
}
fn if_else() {
let exact = diff / (if size == 0 { 1 } else { size });
let cx = tp1.x + any * radius * if anticlockwise { 1.0 } else { -1.0 };
}
fn complex_if_else() {
if let Some(x) = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx {
} else if let Some(x) = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx {
ha();
} else if xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx + xxxxxxxx {
yo();
2017-07-26 09:30:58 +02:00
} else if let Some(x) = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
2017-06-12 06:01:41 +02:00
{
ha();
2017-07-26 09:30:58 +02:00
} else if xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx + xxxxxxxxx
2017-06-12 06:01:41 +02:00
{
yo();
}
}
fn issue1106() {
{
if let hir::ItemEnum(ref enum_def, ref generics) =
2017-06-12 06:01:41 +02:00
self.ast_map.expect_item(enum_node_id).node
{}
}
2017-06-16 01:49:49 +02:00
for entry in WalkDir::new(path)
.into_iter()
.filter_entry(|entry| exclusions.filter_entry(entry))
2017-06-12 06:01:41 +02:00
{}
}
2017-06-20 14:36:28 +02:00
fn issue1570() {
a_very_long_function_name({ some_func(1, { 1 }) })
}
fn issue1714() {
v = &mut { v }[mid..];
let (left, right) = { v }.split_at_mut(mid);
}
// Multi-lined index should be put on the next line if it fits in one line.
fn issue1749() {
{
{
{
if self.shape[(r as f32 + self.x_offset) as usize]
[(c as f32 + self.y_offset) as usize] != 0
{
// hello
}
}
}
}
}
2017-07-26 15:43:50 +02:00
// #1172
fn newlines_between_list_like_expr() {
foo(
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx,
yyyyyyyyyyyyyyyyyyyyyyyyyyyyyy,
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzz,
);
vec![
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx,
yyyyyyyyyyyyyyyyyyyyyyyyyyyyyy,
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzz,
];
match x {
2017-11-16 08:42:11 +01:00
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
| yyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
| zzzzzzzzzzzzzzzzzzzzzzzzzzzzzz => foo(a, b, c),
2017-07-26 15:43:50 +02:00
_ => bar(),
};
}
2017-11-30 07:00:13 +01:00
fn issue2178() {
Ok(result
.iter()
.map(|item| ls_util::rls_to_location(item))
.collect())
}