]> git.lizzy.rs Git - rust.git/blob - tests/ui/absurd-extreme-comparisons.rs
Merge pull request #2984 from flip1995/single_char_pattern
[rust.git] / tests / ui / absurd-extreme-comparisons.rs
1
2
3
4 #![warn(absurd_extreme_comparisons)]
5 #![allow(unused, eq_op, no_effect, unnecessary_operation, needless_pass_by_value)]
6
7 fn main() {
8     const Z: u32 = 0;
9     let u: u32 = 42;
10     u <= 0;
11     u <= Z;
12     u < Z;
13     Z >= u;
14     Z > u;
15     u > std::u32::MAX;
16     u >= std::u32::MAX;
17     std::u32::MAX < u;
18     std::u32::MAX <= u;
19     1-1 > u;
20     u >= !0;
21     u <= 12 - 2*6;
22     let i: i8 = 0;
23     i < -127 - 1;
24     std::i8::MAX >= i;
25     3-7 < std::i32::MIN;
26     let b = false;
27     b >= true;
28     false > b;
29     u > 0; // ok
30     // this is handled by unit_cmp
31     () < {};
32 }
33
34 use std::cmp::{Ordering, PartialEq, PartialOrd};
35
36 #[derive(PartialEq, PartialOrd)]
37 pub struct U(u64);
38
39 impl PartialEq<u32> for U {
40     fn eq(&self, other: &u32) -> bool {
41         self.eq(&U(u64::from(*other)))
42     }
43 }
44 impl PartialOrd<u32> for U {
45     fn partial_cmp(&self, other: &u32) -> Option<Ordering> {
46         self.partial_cmp(&U(u64::from(*other)))
47     }
48 }
49
50 pub fn foo(val: U) -> bool {
51     val > std::u32::MAX
52 }
53
54 pub fn bar(len: u64) -> bool {
55     // This is OK as we are casting from target sized to fixed size
56     len >= std::usize::MAX as u64
57 }