about summary refs log tree commit diff
path: root/tests/ui/consts
diff options
context:
space:
mode:
author许杰友 Jieyou Xu (Joe) <39484203+jieyouxu@users.noreply.github.com>2025-08-19 19:42:06 +0800
committerGitHub <noreply@github.com>2025-08-19 19:42:06 +0800
commit2d058708975587e2ef189489e34b7c78efcfcc42 (patch)
treea1791a10870094d05bf5770519d8b875cca9932b /tests/ui/consts
parent43f778908ddc22a562fc8e40b50959794de018e2 (diff)
parent75e0263af9ca27eac2c922538582deec764d1e7b (diff)
downloadrust-2d058708975587e2ef189489e34b7c78efcfcc42.tar.gz
rust-2d058708975587e2ef189489e34b7c78efcfcc42.zip
Rollup merge of #144983 - Oneirical:uncountable-integer, r=jieyouxu
Rehome 37 `tests/ui/issues/` tests to other subdirectories under `tests/ui/`

Part of rust-lang/rust#133895

Methodology:

1. Refer to the previously written `tests/ui/SUMMARY.md`
2. Find an appropriate category for the test, using the original issue thread and the test contents.
3. Add the issue URL at the bottom (not at the top, as that would mess up stderr line numbers)
4. Rename the tests to make their purpose clearer

Inspired by the methodology that ``@Kivooeo`` was using.

r? ``@jieyouxu``
Diffstat (limited to 'tests/ui/consts')
-rw-r--r--tests/ui/consts/const-range-matching-76191.rs21
-rw-r--r--tests/ui/consts/const-range-matching-76191.stderr51
2 files changed, 72 insertions, 0 deletions
diff --git a/tests/ui/consts/const-range-matching-76191.rs b/tests/ui/consts/const-range-matching-76191.rs
new file mode 100644
index 00000000000..b579a4b3258
--- /dev/null
+++ b/tests/ui/consts/const-range-matching-76191.rs
@@ -0,0 +1,21 @@
+// https://github.com/rust-lang/rust/issues/76191
+// Regression test for diagnostic issue #76191
+#![allow(non_snake_case)]
+
+use std::ops::RangeInclusive;
+
+const RANGE: RangeInclusive<i32> = 0..=255;
+
+const RANGE2: RangeInclusive<i32> = panic!();
+//~^ ERROR evaluation panicked: explicit panic
+
+fn main() {
+    let n: i32 = 1;
+    match n {
+        RANGE => {}
+        //~^ ERROR mismatched types
+        RANGE2 => {}
+        //~^ ERROR mismatched types
+        _ => {}
+    }
+}
diff --git a/tests/ui/consts/const-range-matching-76191.stderr b/tests/ui/consts/const-range-matching-76191.stderr
new file mode 100644
index 00000000000..5c358d0fa1c
--- /dev/null
+++ b/tests/ui/consts/const-range-matching-76191.stderr
@@ -0,0 +1,51 @@
+error[E0080]: evaluation panicked: explicit panic
+  --> $DIR/const-range-matching-76191.rs:9:37
+   |
+LL | const RANGE2: RangeInclusive<i32> = panic!();
+   |                                     ^^^^^^^^ evaluation of `RANGE2` failed here
+
+error[E0308]: mismatched types
+  --> $DIR/const-range-matching-76191.rs:15:9
+   |
+LL | const RANGE: RangeInclusive<i32> = 0..=255;
+   | -------------------------------- constant defined here
+...
+LL |     match n {
+   |           - this expression has type `i32`
+LL |         RANGE => {}
+   |         ^^^^^
+   |         |
+   |         expected `i32`, found `RangeInclusive<i32>`
+   |         `RANGE` is interpreted as a constant, not a new binding
+   |
+   = note: expected type `i32`
+            found struct `std::ops::RangeInclusive<i32>`
+help: you may want to move the range into the match block
+   |
+LL -         RANGE => {}
+LL +         0..=255 => {}
+   |
+
+error[E0308]: mismatched types
+  --> $DIR/const-range-matching-76191.rs:17:9
+   |
+LL | const RANGE2: RangeInclusive<i32> = panic!();
+   | --------------------------------- constant defined here
+...
+LL |     match n {
+   |           - this expression has type `i32`
+...
+LL |         RANGE2 => {}
+   |         ^^^^^^
+   |         |
+   |         expected `i32`, found `RangeInclusive<i32>`
+   |         `RANGE2` is interpreted as a constant, not a new binding
+   |
+   = note: expected type `i32`
+            found struct `std::ops::RangeInclusive<i32>`
+   = note: constants only support matching by type, if you meant to match against a range of values, consider using a range pattern like `min ..= max` in the match block
+
+error: aborting due to 3 previous errors
+
+Some errors have detailed explanations: E0080, E0308.
+For more information about an error, try `rustc --explain E0080`.