]> git.lizzy.rs Git - rust.git/blob - tests/compile-fail/eq_op.rs
443bbbaacd3670344e545b932334472bfd69dfca
[rust.git] / tests / compile-fail / eq_op.rs
1 #![feature(plugin)]
2 #![plugin(clippy)]
3
4 #[deny(eq_op)]
5 #[allow(identity_op)]
6 #[allow(no_effect, unused_variables)]
7 #[deny(nonminimal_bool)]
8 fn main() {
9     // simple values and comparisons
10     1 == 1; //~ERROR equal expressions
11     "no" == "no"; //~ERROR equal expressions
12     // even though I agree that no means no ;-)
13     false != false; //~ERROR equal expressions
14     1.5 < 1.5; //~ERROR equal expressions
15     1u64 >= 1u64; //~ERROR equal expressions
16
17     // casts, methods, parentheses
18     (1 as u64) & (1 as u64); //~ERROR equal expressions
19     1 ^ ((((((1)))))); //~ERROR equal expressions
20
21     // unary and binary operators
22     (-(2) < -(2));  //~ERROR equal expressions
23     ((1 + 1) & (1 + 1) == (1 + 1) & (1 + 1));
24           //~^ ERROR equal expressions as operands to `==`
25                     //~^^ ERROR equal expressions as operands to `&`
26                                //~^^^ ERROR equal expressions as operands to `&`
27     (1 * 2) + (3 * 4) == 1 * 2 + 3 * 4; //~ERROR equal expressions
28
29     // various other things
30     ([1] != [1]); //~ERROR equal expressions
31     ((1, 2) != (1, 2)); //~ERROR equal expressions
32     vec![1, 2, 3] == vec![1, 2, 3]; //no error yet, as we don't match macros
33
34     // const folding
35     1 + 1 == 2; //~ERROR equal expressions
36     1 - 1 == 0; //~ERROR equal expressions as operands to `==`
37                 //~^ ERROR equal expressions as operands to `-`
38
39     1 - 1; //~ERROR equal expressions
40     1 / 1; //~ERROR equal expressions
41     true && true; //~ERROR equal expressions
42     //~|ERROR this boolean expression can be simplified
43     true || true; //~ERROR equal expressions
44     //~|ERROR this boolean expression can be simplified
45
46     let a: u32 = unimplemented!();
47     let b: u32 = unimplemented!();
48
49     a == b && b == a; //~ERROR equal expressions
50     //~|ERROR this boolean expression can be simplified
51     a != b && b != a; //~ERROR equal expressions
52     //~|ERROR this boolean expression can be simplified
53     a < b && b > a; //~ERROR equal expressions
54     //~|ERROR this boolean expression can be simplified
55     a <= b && b >= a; //~ERROR equal expressions
56     //~|ERROR this boolean expression can be simplified
57
58     let mut a = vec![1];
59     a == a; //~ERROR equal expressions
60     2*a.len() == 2*a.len(); // ok, functions
61     a.pop() == a.pop(); // ok, functions
62 }