rust/tests/ui/arithmetic.rs

94 lines
1.5 KiB
Rust
Raw Normal View History

2018-07-28 15:34:52 +00:00
#![warn(clippy::integer_arithmetic, clippy::float_arithmetic)]
2018-12-09 22:26:16 +00:00
#![allow(
unused,
clippy::shadow_reuse,
clippy::shadow_unrelated,
clippy::no_effect,
clippy::unnecessary_operation
)]
#[rustfmt::skip]
fn main() {
let mut i = 1i32;
2017-02-08 13:58:07 +00:00
1 + i;
i * 2;
1 %
i / 2; // no error, this is part of the expression in the preceding line
2017-02-08 13:58:07 +00:00
i - 2 + 2 - i;
2019-01-21 12:59:49 +00:00
-i;
// no error, overflows are checked by `overflowing_literals`
-1;
-(-1);
i & 1; // no wrapping
i | 1;
i ^ 1;
i >> 1;
i << 1;
i += 1;
i -= 1;
i *= 2;
i /= 2;
i %= 2;
// no errors
i <<= 3;
i >>= 2;
i |= 1;
i &= 1;
i ^= i;
let mut f = 1.0f32;
2017-02-08 13:58:07 +00:00
f * 2.0;
2017-02-08 13:58:07 +00:00
1.0 + f;
f * 2.0;
f / 2.0;
f - 2.0 * 4.2;
-f;
f += 1.0;
f -= 1.0;
f *= 2.0;
f /= 2.0;
2019-11-25 18:23:28 +00:00
// no error, overflows are checked by `overflowing_literals`
-1.;
-(-1.);
// No errors for the following items because they are constant expressions
enum Foo {
Bar = -2,
}
struct Baz([i32; 1 + 1]);
union Qux {
field: [i32; 1 + 1],
}
type Alias = [i32; 1 + 1];
const FOO: i32 = -2;
static BAR: i32 = -2;
let _: [i32; 1 + 1] = [0, 0];
let _: [i32; 1 + 1] = {
let a: [i32; 1 + 1] = [0, 0];
a
};
trait Trait {
const ASSOC: i32 = 1 + 1;
}
impl Trait for Foo {
const ASSOC: i32 = {
let _: [i32; 1 + 1];
fn foo() {}
1 + 1
};
}
}