-#![feature(plugin)]
-#![plugin(clippy)]
+// Copyright 2014-2018 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
-#![deny(absurd_extreme_comparisons)]
-#![allow(unused, eq_op, no_effect, unnecessary_operation)]
+#![warn(clippy::absurd_extreme_comparisons)]
+#![allow(
+ unused,
+ clippy::eq_op,
+ clippy::no_effect,
+ clippy::unnecessary_operation,
+ clippy::needless_pass_by_value
+)]
+#[rustfmt::skip]
fn main() {
const Z: u32 = 0;
-
let u: u32 = 42;
-
u <= 0;
- //~^ ERROR this comparison involving the minimum or maximum element for this type contains a
- //~| HELP using u == 0 instead
u <= Z;
- //~^ ERROR this comparison involving
- //~| HELP using u == Z instead
u < Z;
- //~^ ERROR this comparison involving
- //~| HELP comparison is always false
Z >= u;
- //~^ ERROR this comparison involving
- //~| HELP using Z == u instead
Z > u;
- //~^ ERROR this comparison involving
- //~| HELP comparison is always false
u > std::u32::MAX;
- //~^ ERROR this comparison involving
- //~| HELP comparison is always false
u >= std::u32::MAX;
- //~^ ERROR this comparison involving
- //~| HELP using u == std::u32::MAX instead
std::u32::MAX < u;
- //~^ ERROR this comparison involving
- //~| HELP comparison is always false
std::u32::MAX <= u;
- //~^ ERROR this comparison involving
- //~| HELP using std::u32::MAX == u instead
-
1-1 > u;
- //~^ ERROR this comparison involving
- //~| HELP because 1-1 is the minimum value for this type, this comparison is always false
u >= !0;
- //~^ ERROR this comparison involving
- //~| HELP consider using u == !0 instead
u <= 12 - 2*6;
- //~^ ERROR this comparison involving
- //~| HELP consider using u == 12 - 2*6 instead
-
let i: i8 = 0;
i < -127 - 1;
- //~^ ERROR this comparison involving
- //~| HELP comparison is always false
std::i8::MAX >= i;
- //~^ ERROR this comparison involving
- //~| HELP comparison is always true
3-7 < std::i32::MIN;
- //~^ ERROR this comparison involving
- //~| HELP comparison is always false
-
let b = false;
b >= true;
- //~^ ERROR this comparison involving
- //~| HELP using b == true instead
false > b;
- //~^ ERROR this comparison involving
- //~| HELP comparison is always false
-
u > 0; // ok
-
- // this is handled by unit_cmp
- () < {}; //~WARNING <-comparison of unit values detected.
+ // this is handled by clippy::unit_cmp
+ () < {};
}
use std::cmp::{Ordering, PartialEq, PartialOrd};
impl PartialEq<u32> for U {
fn eq(&self, other: &u32) -> bool {
- self.eq(&U(*other as u64))
+ self.eq(&U(u64::from(*other)))
}
}
impl PartialOrd<u32> for U {
fn partial_cmp(&self, other: &u32) -> Option<Ordering> {
- self.partial_cmp(&U(*other as u64))
+ self.partial_cmp(&U(u64::from(*other)))
}
}
pub fn foo(val: U) -> bool {
val > std::u32::MAX
}
+
+pub fn bar(len: u64) -> bool {
+ // This is OK as we are casting from target sized to fixed size
+ len >= std::usize::MAX as u64
+}