put back negative tests but allow float_cmp

This commit is contained in:
clippered 2017-11-06 21:34:30 +11:00
parent ddaf8580d5
commit 66bc12564a
2 changed files with 40 additions and 35 deletions

View file

@ -2,6 +2,7 @@
#![warn(float_cmp_const)] #![warn(float_cmp_const)]
#![allow(float_cmp)]
#![allow(unused, no_effect, unnecessary_operation)] #![allow(unused, no_effect, unnecessary_operation)]
const ONE: f32 = 1.0; const ONE: f32 = 1.0;
@ -35,6 +36,10 @@ fn main() {
ONE != ::std::f32::INFINITY; ONE != ::std::f32::INFINITY;
ONE == ::std::f32::NEG_INFINITY; ONE == ::std::f32::NEG_INFINITY;
// Note: float_cmp will warn as expected on cases where there are no float constants // no errors, but will warn float_cmp if '#![allow(float_cmp)]' above is removed
// e.g. v == 1.0 let w = 1.1;
v == w;
v != w;
v == 1.0;
v != 1.0;
} }

View file

@ -1,85 +1,85 @@
error: strict comparison of f32 or f64 constant error: strict comparison of f32 or f64 constant
--> $DIR/float_cmp_const.rs:16:5 --> $DIR/float_cmp_const.rs:17:5
| |
16 | 1f32 == ONE; 17 | 1f32 == ONE;
| ^^^^^^^^^^^ help: consider comparing them within some error: `(1f32 - ONE).abs() < error` | ^^^^^^^^^^^ help: consider comparing them within some error: `(1f32 - ONE).abs() < error`
| |
= note: `-D float-cmp-const` implied by `-D warnings` = note: `-D float-cmp-const` implied by `-D warnings`
note: std::f32::EPSILON and std::f64::EPSILON are available. note: std::f32::EPSILON and std::f64::EPSILON are available.
--> $DIR/float_cmp_const.rs:16:5 --> $DIR/float_cmp_const.rs:17:5
| |
16 | 1f32 == ONE; 17 | 1f32 == ONE;
| ^^^^^^^^^^^ | ^^^^^^^^^^^
error: strict comparison of f32 or f64 constant
--> $DIR/float_cmp_const.rs:17:5
|
17 | TWO == ONE;
| ^^^^^^^^^^ help: consider comparing them within some error: `(TWO - ONE).abs() < error`
|
note: std::f32::EPSILON and std::f64::EPSILON are available.
--> $DIR/float_cmp_const.rs:17:5
|
17 | TWO == ONE;
| ^^^^^^^^^^
error: strict comparison of f32 or f64 constant error: strict comparison of f32 or f64 constant
--> $DIR/float_cmp_const.rs:18:5 --> $DIR/float_cmp_const.rs:18:5
| |
18 | TWO != ONE; 18 | TWO == ONE;
| ^^^^^^^^^^ help: consider comparing them within some error: `(TWO - ONE).abs() < error` | ^^^^^^^^^^ help: consider comparing them within some error: `(TWO - ONE).abs() < error`
| |
note: std::f32::EPSILON and std::f64::EPSILON are available. note: std::f32::EPSILON and std::f64::EPSILON are available.
--> $DIR/float_cmp_const.rs:18:5 --> $DIR/float_cmp_const.rs:18:5
| |
18 | TWO != ONE; 18 | TWO == ONE;
| ^^^^^^^^^^ | ^^^^^^^^^^
error: strict comparison of f32 or f64 constant error: strict comparison of f32 or f64 constant
--> $DIR/float_cmp_const.rs:19:5 --> $DIR/float_cmp_const.rs:19:5
| |
19 | ONE + ONE == TWO; 19 | TWO != ONE;
| ^^^^^^^^^^ help: consider comparing them within some error: `(TWO - ONE).abs() < error`
|
note: std::f32::EPSILON and std::f64::EPSILON are available.
--> $DIR/float_cmp_const.rs:19:5
|
19 | TWO != ONE;
| ^^^^^^^^^^
error: strict comparison of f32 or f64 constant
--> $DIR/float_cmp_const.rs:20:5
|
20 | ONE + ONE == TWO;
| ^^^^^^^^^^^^^^^^ help: consider comparing them within some error: `(ONE + ONE - TWO).abs() < error` | ^^^^^^^^^^^^^^^^ help: consider comparing them within some error: `(ONE + ONE - TWO).abs() < error`
| |
note: std::f32::EPSILON and std::f64::EPSILON are available. note: std::f32::EPSILON and std::f64::EPSILON are available.
--> $DIR/float_cmp_const.rs:19:5 --> $DIR/float_cmp_const.rs:20:5
| |
19 | ONE + ONE == TWO; 20 | ONE + ONE == TWO;
| ^^^^^^^^^^^^^^^^ | ^^^^^^^^^^^^^^^^
error: strict comparison of f32 or f64 constant error: strict comparison of f32 or f64 constant
--> $DIR/float_cmp_const.rs:20:5 --> $DIR/float_cmp_const.rs:21:5
| |
20 | 1 as f32 == ONE; 21 | 1 as f32 == ONE;
| ^^^^^^^^^^^^^^^ help: consider comparing them within some error: `(1 as f32 - ONE).abs() < error` | ^^^^^^^^^^^^^^^ help: consider comparing them within some error: `(1 as f32 - ONE).abs() < error`
| |
note: std::f32::EPSILON and std::f64::EPSILON are available. note: std::f32::EPSILON and std::f64::EPSILON are available.
--> $DIR/float_cmp_const.rs:20:5 --> $DIR/float_cmp_const.rs:21:5
| |
20 | 1 as f32 == ONE; 21 | 1 as f32 == ONE;
| ^^^^^^^^^^^^^^^ | ^^^^^^^^^^^^^^^
error: strict comparison of f32 or f64 constant error: strict comparison of f32 or f64 constant
--> $DIR/float_cmp_const.rs:23:5 --> $DIR/float_cmp_const.rs:24:5
| |
23 | v == ONE; 24 | v == ONE;
| ^^^^^^^^ help: consider comparing them within some error: `(v - ONE).abs() < error` | ^^^^^^^^ help: consider comparing them within some error: `(v - ONE).abs() < error`
| |
note: std::f32::EPSILON and std::f64::EPSILON are available. note: std::f32::EPSILON and std::f64::EPSILON are available.
--> $DIR/float_cmp_const.rs:23:5 --> $DIR/float_cmp_const.rs:24:5
| |
23 | v == ONE; 24 | v == ONE;
| ^^^^^^^^ | ^^^^^^^^
error: strict comparison of f32 or f64 constant error: strict comparison of f32 or f64 constant
--> $DIR/float_cmp_const.rs:24:5 --> $DIR/float_cmp_const.rs:25:5
| |
24 | v != ONE; 25 | v != ONE;
| ^^^^^^^^ help: consider comparing them within some error: `(v - ONE).abs() < error` | ^^^^^^^^ help: consider comparing them within some error: `(v - ONE).abs() < error`
| |
note: std::f32::EPSILON and std::f64::EPSILON are available. note: std::f32::EPSILON and std::f64::EPSILON are available.
--> $DIR/float_cmp_const.rs:24:5 --> $DIR/float_cmp_const.rs:25:5
| |
24 | v != ONE; 25 | v != ONE;
| ^^^^^^^^ | ^^^^^^^^