about summary refs log tree commit diff
diff options
context:
space:
mode:
authorOli Scherer <github333195615777966@oli-obk.de>2025-01-31 17:19:19 +0000
committerOli Scherer <github333195615777966@oli-obk.de>2025-02-05 11:25:44 +0000
commitd1231eabf9fb80aed4c9645a2d38883faa18bab5 (patch)
treea9de1be97a410312bb159121bb8100aae0440cdc
parent8df89d1cb077cd76013d3f9f5a4e92c5b5a9280c (diff)
downloadrust-d1231eabf9fb80aed4c9645a2d38883faa18bab5.tar.gz
rust-d1231eabf9fb80aed4c9645a2d38883faa18bab5.zip
Add regression test
-rw-r--r--tests/ui/pattern/overflowing-literals.rs20
-rw-r--r--tests/ui/pattern/overflowing-literals.stderr29
2 files changed, 49 insertions, 0 deletions
diff --git a/tests/ui/pattern/overflowing-literals.rs b/tests/ui/pattern/overflowing-literals.rs
new file mode 100644
index 00000000000..ab92283ff67
--- /dev/null
+++ b/tests/ui/pattern/overflowing-literals.rs
@@ -0,0 +1,20 @@
+//! Check that overflowing literals are in patterns are rejected
+
+#![feature(pattern_types)]
+#![feature(pattern_type_macro)]
+
+use std::pat::pattern_type;
+
+type TooBig = pattern_type!(u8 is 500..);
+//~^ ERROR:  literal out of range for `u8`
+type TooSmall = pattern_type!(i8 is -500..);
+//~^ ERROR:  literal out of range for `i8`
+type TooBigSigned = pattern_type!(i8 is 200..);
+//~^ ERROR:  literal out of range for `i8`
+
+fn main() {
+    match 5_u8 {
+        500 => {}
+        _ => {}
+    }
+}
diff --git a/tests/ui/pattern/overflowing-literals.stderr b/tests/ui/pattern/overflowing-literals.stderr
new file mode 100644
index 00000000000..b6609303cb7
--- /dev/null
+++ b/tests/ui/pattern/overflowing-literals.stderr
@@ -0,0 +1,29 @@
+error: literal out of range for `u8`
+  --> $DIR/overflowing-literals.rs:8:35
+   |
+LL | type TooBig = pattern_type!(u8 is 500..);
+   |                                   ^^^
+   |
+   = note: the literal `500` does not fit into the type `u8` whose range is `0..=255`
+   = note: `#[deny(overflowing_literals)]` on by default
+
+error: literal out of range for `i8`
+  --> $DIR/overflowing-literals.rs:10:37
+   |
+LL | type TooSmall = pattern_type!(i8 is -500..);
+   |                                     ^^^^
+   |
+   = note: the literal `-500` does not fit into the type `i8` whose range is `-128..=127`
+   = help: consider using the type `i16` instead
+
+error: literal out of range for `i8`
+  --> $DIR/overflowing-literals.rs:12:41
+   |
+LL | type TooBigSigned = pattern_type!(i8 is 200..);
+   |                                         ^^^
+   |
+   = note: the literal `200` does not fit into the type `i8` whose range is `-128..=127`
+   = help: consider using the type `u8` instead
+
+error: aborting due to 3 previous errors
+