2019-02-10 09:19:24 +00:00
|
|
|
#![warn(clippy::if_same_then_else)]
|
|
|
|
#![allow(
|
|
|
|
clippy::blacklisted_name,
|
|
|
|
clippy::eq_op,
|
|
|
|
clippy::never_loop,
|
|
|
|
clippy::no_effect,
|
2020-01-19 06:04:41 +00:00
|
|
|
clippy::unused_unit,
|
2020-12-11 22:29:53 +00:00
|
|
|
clippy::zero_divided_by_zero,
|
2021-04-01 16:30:47 +00:00
|
|
|
clippy::branches_sharing_code
|
2019-02-10 09:19:24 +00:00
|
|
|
)]
|
|
|
|
|
|
|
|
struct Foo {
|
|
|
|
bar: u8,
|
|
|
|
}
|
|
|
|
|
|
|
|
fn foo() -> bool {
|
|
|
|
unimplemented!()
|
|
|
|
}
|
|
|
|
|
2020-01-19 06:04:41 +00:00
|
|
|
fn if_same_then_else() {
|
2019-02-10 09:19:24 +00:00
|
|
|
if true {
|
|
|
|
Foo { bar: 42 };
|
|
|
|
0..10;
|
|
|
|
..;
|
|
|
|
0..;
|
|
|
|
..10;
|
|
|
|
0..=10;
|
|
|
|
foo();
|
|
|
|
} else {
|
|
|
|
//~ ERROR same body as `if` block
|
|
|
|
Foo { bar: 42 };
|
|
|
|
0..10;
|
|
|
|
..;
|
|
|
|
0..;
|
|
|
|
..10;
|
|
|
|
0..=10;
|
|
|
|
foo();
|
|
|
|
}
|
|
|
|
|
|
|
|
if true {
|
|
|
|
Foo { bar: 42 };
|
|
|
|
} else {
|
|
|
|
Foo { bar: 43 };
|
|
|
|
}
|
|
|
|
|
|
|
|
if true {
|
|
|
|
();
|
|
|
|
} else {
|
|
|
|
()
|
|
|
|
}
|
|
|
|
|
|
|
|
if true {
|
|
|
|
0..10;
|
|
|
|
} else {
|
|
|
|
0..=10;
|
|
|
|
}
|
|
|
|
|
|
|
|
if true {
|
|
|
|
foo();
|
|
|
|
foo();
|
|
|
|
} else {
|
|
|
|
foo();
|
|
|
|
}
|
|
|
|
|
|
|
|
let _ = if true {
|
|
|
|
0.0
|
|
|
|
} else {
|
|
|
|
//~ ERROR same body as `if` block
|
|
|
|
0.0
|
|
|
|
};
|
|
|
|
|
|
|
|
let _ = if true {
|
|
|
|
-0.0
|
|
|
|
} else {
|
|
|
|
//~ ERROR same body as `if` block
|
|
|
|
-0.0
|
|
|
|
};
|
|
|
|
|
|
|
|
let _ = if true { 0.0 } else { -0.0 };
|
|
|
|
|
|
|
|
// Different NaNs
|
2020-04-07 22:04:33 +00:00
|
|
|
let _ = if true { 0.0 / 0.0 } else { f32::NAN };
|
2019-02-10 09:19:24 +00:00
|
|
|
|
|
|
|
if true {
|
|
|
|
foo();
|
|
|
|
}
|
|
|
|
|
|
|
|
let _ = if true {
|
|
|
|
42
|
|
|
|
} else {
|
|
|
|
//~ ERROR same body as `if` block
|
|
|
|
42
|
|
|
|
};
|
|
|
|
|
|
|
|
if true {
|
|
|
|
let bar = if true { 42 } else { 43 };
|
|
|
|
|
|
|
|
while foo() {
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
bar + 1;
|
|
|
|
} else {
|
|
|
|
//~ ERROR same body as `if` block
|
|
|
|
let bar = if true { 42 } else { 43 };
|
|
|
|
|
|
|
|
while foo() {
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
bar + 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
if true {
|
|
|
|
let _ = match 42 {
|
|
|
|
42 => 1,
|
|
|
|
a if a > 0 => 2,
|
|
|
|
10..=15 => 3,
|
|
|
|
_ => 4,
|
|
|
|
};
|
|
|
|
} else if false {
|
|
|
|
foo();
|
|
|
|
} else if foo() {
|
|
|
|
let _ = match 42 {
|
|
|
|
42 => 1,
|
|
|
|
a if a > 0 => 2,
|
|
|
|
10..=15 => 3,
|
|
|
|
_ => 4,
|
|
|
|
};
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2019-01-31 01:15:29 +00:00
|
|
|
// Issue #2423. This was causing an ICE.
|
2019-02-10 09:19:24 +00:00
|
|
|
fn func() {
|
|
|
|
if true {
|
|
|
|
f(&[0; 62]);
|
|
|
|
f(&[0; 4]);
|
|
|
|
f(&[0; 3]);
|
|
|
|
} else {
|
|
|
|
f(&[0; 62]);
|
|
|
|
f(&[0; 6]);
|
|
|
|
f(&[0; 6]);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
fn f(val: &[u8]) {}
|
|
|
|
|
2020-06-09 21:49:21 +00:00
|
|
|
mod issue_5698 {
|
|
|
|
fn mul_not_always_commutative(x: i32, y: i32) -> i32 {
|
|
|
|
if x == 42 {
|
|
|
|
x * y
|
|
|
|
} else if x == 21 {
|
|
|
|
y * x
|
|
|
|
} else {
|
|
|
|
0
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2019-02-10 09:19:24 +00:00
|
|
|
fn main() {}
|