]> git.lizzy.rs Git - rust.git/blob - tests/ui/float_cmp_const.rs
Merge branch 'master' into rustfmt_tests
[rust.git] / tests / ui / float_cmp_const.rs
1 // Copyright 2014-2018 The Rust Project Developers. See the COPYRIGHT
2 // file at the top-level directory of this distribution.
3 //
4 // Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
5 // http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
6 // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
7 // option. This file may not be copied, modified, or distributed
8 // except according to those terms.
9
10 #![warn(clippy::float_cmp_const)]
11 #![allow(clippy::float_cmp)]
12 #![allow(unused, clippy::no_effect, clippy::unnecessary_operation)]
13
14 const ONE: f32 = 1.0;
15 const TWO: f32 = 2.0;
16
17 fn eq_one(x: f32) -> bool {
18     if x.is_nan() {
19         false
20     } else {
21         x == ONE
22     } // no error, inside "eq" fn
23 }
24
25 fn main() {
26     // has errors
27     1f32 == ONE;
28     TWO == ONE;
29     TWO != ONE;
30     ONE + ONE == TWO;
31     1 as f32 == ONE;
32
33     let v = 0.9;
34     v == ONE;
35     v != ONE;
36
37     // no errors, lower than or greater than comparisons
38     v < ONE;
39     v > ONE;
40     v <= ONE;
41     v >= ONE;
42
43     // no errors, zero and infinity values
44     ONE != 0f32;
45     TWO == 0f32;
46     ONE != ::std::f32::INFINITY;
47     ONE == ::std::f32::NEG_INFINITY;
48
49     // no errors, but will warn clippy::float_cmp if '#![allow(float_cmp)]' above is removed
50     let w = 1.1;
51     v == w;
52     v != w;
53     v == 1.0;
54     v != 1.0;
55 }