about summary refs log tree commit diff
path: root/tests/ui/numbers-arithmetic
diff options
context:
space:
mode:
Diffstat (limited to 'tests/ui/numbers-arithmetic')
-rw-r--r--tests/ui/numbers-arithmetic/unary-negation-unsigned-integer-error.rs7
-rw-r--r--tests/ui/numbers-arithmetic/unary-negation-unsigned-integer-error.stderr42
2 files changed, 49 insertions, 0 deletions
diff --git a/tests/ui/numbers-arithmetic/unary-negation-unsigned-integer-error.rs b/tests/ui/numbers-arithmetic/unary-negation-unsigned-integer-error.rs
new file mode 100644
index 00000000000..4325c8b111b
--- /dev/null
+++ b/tests/ui/numbers-arithmetic/unary-negation-unsigned-integer-error.rs
@@ -0,0 +1,7 @@
+//! This test ensures that the unary negation operator (`-`) cannot be applied to unsigned ints
+
+fn main() {
+    let x = -1 as usize; //~ ERROR: cannot apply unary operator `-`
+    let x = (-1) as usize; //~ ERROR: cannot apply unary operator `-`
+    let x: u32 = -1; //~ ERROR: cannot apply unary operator `-`
+}
diff --git a/tests/ui/numbers-arithmetic/unary-negation-unsigned-integer-error.stderr b/tests/ui/numbers-arithmetic/unary-negation-unsigned-integer-error.stderr
new file mode 100644
index 00000000000..4ce870ded9f
--- /dev/null
+++ b/tests/ui/numbers-arithmetic/unary-negation-unsigned-integer-error.stderr
@@ -0,0 +1,42 @@
+error[E0600]: cannot apply unary operator `-` to type `usize`
+  --> $DIR/unary-negation-unsigned-integer-error.rs:4:13
+   |
+LL |     let x = -1 as usize;
+   |             ^^ cannot apply unary operator `-`
+   |
+   = note: unsigned values cannot be negated
+help: you may have meant the maximum value of `usize`
+   |
+LL -     let x = -1 as usize;
+LL +     let x = usize::MAX;
+   |
+
+error[E0600]: cannot apply unary operator `-` to type `usize`
+  --> $DIR/unary-negation-unsigned-integer-error.rs:5:13
+   |
+LL |     let x = (-1) as usize;
+   |             ^^^^ cannot apply unary operator `-`
+   |
+   = note: unsigned values cannot be negated
+help: you may have meant the maximum value of `usize`
+   |
+LL -     let x = (-1) as usize;
+LL +     let x = usize::MAX;
+   |
+
+error[E0600]: cannot apply unary operator `-` to type `u32`
+  --> $DIR/unary-negation-unsigned-integer-error.rs:6:18
+   |
+LL |     let x: u32 = -1;
+   |                  ^^ cannot apply unary operator `-`
+   |
+   = note: unsigned values cannot be negated
+help: you may have meant the maximum value of `u32`
+   |
+LL -     let x: u32 = -1;
+LL +     let x: u32 = u32::MAX;
+   |
+
+error: aborting due to 3 previous errors
+
+For more information about this error, try `rustc --explain E0600`.