]> git.lizzy.rs Git - rust.git/blob - tests/ui/absurd-extreme-comparisons.rs
Auto merge of #3635 - matthiaskrgr:revert_random_state_3603, r=xfix
[rust.git] / tests / ui / absurd-extreme-comparisons.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::absurd_extreme_comparisons)]
11 #![allow(
12     unused,
13     clippy::eq_op,
14     clippy::no_effect,
15     clippy::unnecessary_operation,
16     clippy::needless_pass_by_value
17 )]
18
19 #[rustfmt::skip]
20 fn main() {
21     const Z: u32 = 0;
22     let u: u32 = 42;
23     u <= 0;
24     u <= Z;
25     u < Z;
26     Z >= u;
27     Z > u;
28     u > std::u32::MAX;
29     u >= std::u32::MAX;
30     std::u32::MAX < u;
31     std::u32::MAX <= u;
32     1-1 > u;
33     u >= !0;
34     u <= 12 - 2*6;
35     let i: i8 = 0;
36     i < -127 - 1;
37     std::i8::MAX >= i;
38     3-7 < std::i32::MIN;
39     let b = false;
40     b >= true;
41     false > b;
42     u > 0; // ok
43     // this is handled by clippy::unit_cmp
44     () < {};
45 }
46
47 use std::cmp::{Ordering, PartialEq, PartialOrd};
48
49 #[derive(PartialEq, PartialOrd)]
50 pub struct U(u64);
51
52 impl PartialEq<u32> for U {
53     fn eq(&self, other: &u32) -> bool {
54         self.eq(&U(u64::from(*other)))
55     }
56 }
57 impl PartialOrd<u32> for U {
58     fn partial_cmp(&self, other: &u32) -> Option<Ordering> {
59         self.partial_cmp(&U(u64::from(*other)))
60     }
61 }
62
63 pub fn foo(val: U) -> bool {
64     val > std::u32::MAX
65 }
66
67 pub fn bar(len: u64) -> bool {
68     // This is OK as we are casting from target sized to fixed size
69     len >= std::usize::MAX as u64
70 }