mirror of
https://github.com/rust-lang/rust.git
synced 2024-12-14 01:25:54 +00:00
d55d791a3a
Part of #68490. Care has been taken to leave the old consts where appropriate, for testing backcompat regressions, module shadowing, etc. The intrinsics docs were accidentally referring to some methods on f64 as std::f64, which I changed due to being contrary with how we normally disambiguate the shadow module from the primitive. In one other place I changed std::u8 to std::ops since it was just testing path handling in macros. For places which have legitimate uses of the old consts, deprecated attributes have been optimistically inserted. Although currently unnecessary, they exist to emphasize to any future deprecation effort the necessity of these specific symbols and prevent them from being accidentally removed.
63 lines
1.4 KiB
Rust
63 lines
1.4 KiB
Rust
// does not test any rustfixable lints
|
|
|
|
#![warn(clippy::float_cmp_const)]
|
|
#![allow(clippy::float_cmp)]
|
|
#![allow(unused, clippy::no_effect, clippy::unnecessary_operation)]
|
|
|
|
const ONE: f32 = 1.0;
|
|
const TWO: f32 = 2.0;
|
|
|
|
fn eq_one(x: f32) -> bool {
|
|
if x.is_nan() {
|
|
false
|
|
} else {
|
|
x == ONE
|
|
} // no error, inside "eq" fn
|
|
}
|
|
|
|
fn main() {
|
|
// has errors
|
|
1f32 == ONE;
|
|
TWO == ONE;
|
|
TWO != ONE;
|
|
ONE + ONE == TWO;
|
|
let x = 1;
|
|
x as f32 == ONE;
|
|
|
|
let v = 0.9;
|
|
v == ONE;
|
|
v != ONE;
|
|
|
|
// no errors, lower than or greater than comparisons
|
|
v < ONE;
|
|
v > ONE;
|
|
v <= ONE;
|
|
v >= ONE;
|
|
|
|
// no errors, zero and infinity values
|
|
ONE != 0f32;
|
|
TWO == 0f32;
|
|
ONE != f32::INFINITY;
|
|
ONE == f32::NEG_INFINITY;
|
|
|
|
// no errors, but will warn clippy::float_cmp if '#![allow(float_cmp)]' above is removed
|
|
let w = 1.1;
|
|
v == w;
|
|
v != w;
|
|
v == 1.0;
|
|
v != 1.0;
|
|
|
|
const ZERO_ARRAY: [f32; 3] = [0.0, 0.0, 0.0];
|
|
const ZERO_INF_ARRAY: [f32; 3] = [0.0, f32::INFINITY, f32::NEG_INFINITY];
|
|
const NON_ZERO_ARRAY: [f32; 3] = [0.0, 0.1, 0.2];
|
|
const NON_ZERO_ARRAY2: [f32; 3] = [0.2, 0.1, 0.0];
|
|
|
|
// no errors, zero and infinity values
|
|
NON_ZERO_ARRAY[0] == NON_ZERO_ARRAY2[1]; // lhs is 0.0
|
|
ZERO_ARRAY == NON_ZERO_ARRAY; // lhs is all zeros
|
|
ZERO_INF_ARRAY == NON_ZERO_ARRAY; // lhs is all zeros or infinities
|
|
|
|
// has errors
|
|
NON_ZERO_ARRAY == NON_ZERO_ARRAY2;
|
|
}
|