]> git.lizzy.rs Git - rust.git/blobdiff - tests/ui/arithmetic.rs
Auto merge of #4478 - tsurai:master, r=flip1995
[rust.git] / tests / ui / arithmetic.rs
index b281c239f36df9bd5771478cddad2c313682656d..c3cea99760683ccef2b4687eb2923c3e3a5c1004 100644 (file)
@@ -1,8 +1,13 @@
-#![feature(plugin)]
-#![plugin(clippy)]
+#![warn(clippy::integer_arithmetic, clippy::float_arithmetic)]
+#![allow(
+    unused,
+    clippy::shadow_reuse,
+    clippy::shadow_unrelated,
+    clippy::no_effect,
+    clippy::unnecessary_operation
+)]
 
-#![warn(integer_arithmetic, float_arithmetic)]
-#![allow(unused, shadow_reuse, shadow_unrelated, no_effect, unnecessary_operation)]
+#[rustfmt::skip]
 fn main() {
     let i = 1i32;
     1 + i;
@@ -12,6 +17,10 @@ fn main() {
     i - 2 + 2 - i;
     -i;
 
+    // no error, overflows are checked by `overflowing_literals`
+    -1;
+    -(-1);
+
     i & 1; // no wrapping
     i | 1;
     i ^ 1;
@@ -27,4 +36,36 @@ fn main() {
     f / 2.0;
     f - 2.0 * 4.2;
     -f;
+
+    // No errors for the following items because they are constant expressions
+    enum Foo {
+        Bar = -2,
+    }
+    struct Baz([i32; 1 + 1]);
+    union Qux {
+        field: [i32; 1 + 1],
+    }
+    type Alias = [i32; 1 + 1];
+
+    const FOO: i32 = -2;
+    static BAR: i32 = -2;
+
+    let _: [i32; 1 + 1] = [0, 0];
+
+    let _: [i32; 1 + 1] = {
+        let a: [i32; 1 + 1] = [0, 0];
+        a
+    };
+
+    trait Trait {
+        const ASSOC: i32 = 1 + 1;
+    }
+
+    impl Trait for Foo {
+        const ASSOC: i32 = {
+            let _: [i32; 1 + 1];
+            fn foo() {}
+            1 + 1
+        };
+    }
 }