rust/tests/ui/float_cmp_const.rs
bstrie d55d791a3a Update tests to remove old numeric constants
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.
2020-11-29 00:55:55 -05:00

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;
}