about summary refs log tree commit diff
path: root/src/test/ui/pattern
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/ui/pattern')
-rw-r--r--src/test/ui/pattern/usefulness/non-exhaustive-pattern-pointer-size-int.rs21
-rw-r--r--src/test/ui/pattern/usefulness/non-exhaustive-pattern-pointer-size-int.stderr25
2 files changed, 46 insertions, 0 deletions
diff --git a/src/test/ui/pattern/usefulness/non-exhaustive-pattern-pointer-size-int.rs b/src/test/ui/pattern/usefulness/non-exhaustive-pattern-pointer-size-int.rs
new file mode 100644
index 00000000000..aa6a3ffc522
--- /dev/null
+++ b/src/test/ui/pattern/usefulness/non-exhaustive-pattern-pointer-size-int.rs
@@ -0,0 +1,21 @@
+use std::{usize, isize};
+
+fn main() {
+    match 0usize {
+        //~^ ERROR non-exhaustive patterns
+        //~| NOTE pattern `_` not covered
+        //~| NOTE the matched value is of type `usize`
+        //~| NOTE for `usize` and `isize`, no assumptions about the maximum value are permitted
+        //~| NOTE to exhaustively match on either pointer-size integer type, wildcards must be used
+        0 ..= usize::MAX => {}
+    }
+
+    match 0isize {
+        //~^ ERROR non-exhaustive patterns
+        //~| NOTE pattern `_` not covered
+        //~| NOTE the matched value is of type `isize`
+        //~| NOTE for `usize` and `isize`, no assumptions about the maximum value are permitted
+        //~| NOTE to exhaustively match on either pointer-size integer type, wildcards must be used
+        isize::MIN ..= isize::MAX => {}
+    }
+}
diff --git a/src/test/ui/pattern/usefulness/non-exhaustive-pattern-pointer-size-int.stderr b/src/test/ui/pattern/usefulness/non-exhaustive-pattern-pointer-size-int.stderr
new file mode 100644
index 00000000000..cd47e74fa46
--- /dev/null
+++ b/src/test/ui/pattern/usefulness/non-exhaustive-pattern-pointer-size-int.stderr
@@ -0,0 +1,25 @@
+error[E0004]: non-exhaustive patterns: `_` not covered
+  --> $DIR/non-exhaustive-pattern-pointer-size-int.rs:4:11
+   |
+LL |     match 0usize {
+   |           ^^^^^^ pattern `_` not covered
+   |
+   = help: ensure that all possible cases are being handled, possibly by adding wildcards or more match arms
+   = note: the matched value is of type `usize`
+   = note: for `usize` and `isize`, no assumptions about the maximum value are permitted
+   = note: to exhaustively match on either pointer-size integer type, wildcards must be used
+
+error[E0004]: non-exhaustive patterns: `_` not covered
+  --> $DIR/non-exhaustive-pattern-pointer-size-int.rs:13:11
+   |
+LL |     match 0isize {
+   |           ^^^^^^ pattern `_` not covered
+   |
+   = help: ensure that all possible cases are being handled, possibly by adding wildcards or more match arms
+   = note: the matched value is of type `isize`
+   = note: for `usize` and `isize`, no assumptions about the maximum value are permitted
+   = note: to exhaustively match on either pointer-size integer type, wildcards must be used
+
+error: aborting due to 2 previous errors
+
+For more information about this error, try `rustc --explain E0004`.