about summary refs log tree commit diff
path: root/tests/ui/enum
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2025-08-19 14:43:48 +0000
committerbors <bors@rust-lang.org>2025-08-19 14:43:48 +0000
commit16ad385579cebb6f7d53367c552661b6b51a4a02 (patch)
tree9127978a6da3066df8319d286ccfa6ec8451b969 /tests/ui/enum
parent8c32e313cccf7df531e2d49ffb8227bb92304aee (diff)
parent5d37e8e707e74a0820e1171f200d45fd2b8fa13c (diff)
downloadrust-16ad385579cebb6f7d53367c552661b6b51a4a02.tar.gz
rust-16ad385579cebb6f7d53367c552661b6b51a4a02.zip
Auto merge of #145599 - jieyouxu:rollup-523cxhm, r=jieyouxu
Rollup of 15 pull requests

Successful merges:

 - rust-lang/rust#139345 (Extend `QueryStability` to handle `IntoIterator` implementations)
 - rust-lang/rust#140740 (Add `-Zindirect-branch-cs-prefix`)
 - rust-lang/rust#142079 (nll-relate: improve hr opaque types support)
 - rust-lang/rust#142938 (implement std::fs::set_permissions_nofollow on unix)
 - rust-lang/rust#143730 (fmt of non-decimal radix untangled)
 - rust-lang/rust#144767 (Correct some grammar in integer documentation)
 - rust-lang/rust#144906 (Require approval from t-infra instead of t-release on tier bumps)
 - rust-lang/rust#144983 (Rehome 37 `tests/ui/issues/` tests to other subdirectories under `tests/ui/`)
 - rust-lang/rust#145025 (run spellcheck as a tidy extra check in ci)
 - rust-lang/rust#145099 (rustc_target: Add the `32s` target feature for LoongArch)
 - rust-lang/rust#145166 (suggest using `pub(crate)` for E0364)
 - rust-lang/rust#145255 (dec2flt: Provide more valid inputs examples)
 - rust-lang/rust#145306 (Add tracing to various miscellaneous functions)
 - rust-lang/rust#145336 (Hide docs for `core::unicode`)
 - rust-lang/rust#145585 (Miri: fix handling of in-place argument and return place handling)

r? `@ghost`
`@rustbot` modify labels: rollup
Diffstat (limited to 'tests/ui/enum')
-rw-r--r--tests/ui/enum/enum-discriminant-type-mismatch-8761.rs11
-rw-r--r--tests/ui/enum/enum-discriminant-type-mismatch-8761.stderr27
-rw-r--r--tests/ui/enum/enum-variant-field-error-80607.rs11
-rw-r--r--tests/ui/enum/enum-variant-field-error-80607.stderr18
-rw-r--r--tests/ui/enum/simple-enum-usage-8506.rs14
5 files changed, 81 insertions, 0 deletions
diff --git a/tests/ui/enum/enum-discriminant-type-mismatch-8761.rs b/tests/ui/enum/enum-discriminant-type-mismatch-8761.rs
new file mode 100644
index 00000000000..ae09b919dc1
--- /dev/null
+++ b/tests/ui/enum/enum-discriminant-type-mismatch-8761.rs
@@ -0,0 +1,11 @@
+// https://github.com/rust-lang/rust/issues/8761
+enum Foo {
+    A = 1i64,
+    //~^ ERROR mismatched types
+    //~| NOTE expected `isize`, found `i64`
+    B = 2u8
+    //~^ ERROR mismatched types
+    //~| NOTE expected `isize`, found `u8`
+}
+
+fn main() {}
diff --git a/tests/ui/enum/enum-discriminant-type-mismatch-8761.stderr b/tests/ui/enum/enum-discriminant-type-mismatch-8761.stderr
new file mode 100644
index 00000000000..f1645183e17
--- /dev/null
+++ b/tests/ui/enum/enum-discriminant-type-mismatch-8761.stderr
@@ -0,0 +1,27 @@
+error[E0308]: mismatched types
+  --> $DIR/enum-discriminant-type-mismatch-8761.rs:3:9
+   |
+LL |     A = 1i64,
+   |         ^^^^ expected `isize`, found `i64`
+   |
+help: change the type of the numeric literal from `i64` to `isize`
+   |
+LL -     A = 1i64,
+LL +     A = 1isize,
+   |
+
+error[E0308]: mismatched types
+  --> $DIR/enum-discriminant-type-mismatch-8761.rs:6:9
+   |
+LL |     B = 2u8
+   |         ^^^ expected `isize`, found `u8`
+   |
+help: change the type of the numeric literal from `u8` to `isize`
+   |
+LL -     B = 2u8
+LL +     B = 2isize
+   |
+
+error: aborting due to 2 previous errors
+
+For more information about this error, try `rustc --explain E0308`.
diff --git a/tests/ui/enum/enum-variant-field-error-80607.rs b/tests/ui/enum/enum-variant-field-error-80607.rs
new file mode 100644
index 00000000000..aa3f2f7c526
--- /dev/null
+++ b/tests/ui/enum/enum-variant-field-error-80607.rs
@@ -0,0 +1,11 @@
+// https://github.com/rust-lang/rust/issues/80607
+// This tests makes sure the diagnostics print the offending enum variant, not just the type.
+pub enum Enum {
+    V1(i32),
+}
+
+pub fn foo(x: i32) -> Enum {
+    Enum::V1 { x } //~ ERROR `Enum::V1` has no field named `x`
+}
+
+fn main() {}
diff --git a/tests/ui/enum/enum-variant-field-error-80607.stderr b/tests/ui/enum/enum-variant-field-error-80607.stderr
new file mode 100644
index 00000000000..8d088ef04bb
--- /dev/null
+++ b/tests/ui/enum/enum-variant-field-error-80607.stderr
@@ -0,0 +1,18 @@
+error[E0559]: variant `Enum::V1` has no field named `x`
+  --> $DIR/enum-variant-field-error-80607.rs:8:16
+   |
+LL |     V1(i32),
+   |     -- `Enum::V1` defined here
+...
+LL |     Enum::V1 { x }
+   |                ^ field does not exist
+   |
+help: `Enum::V1` is a tuple variant, use the appropriate syntax
+   |
+LL -     Enum::V1 { x }
+LL +     Enum::V1(/* i32 */)
+   |
+
+error: aborting due to 1 previous error
+
+For more information about this error, try `rustc --explain E0559`.
diff --git a/tests/ui/enum/simple-enum-usage-8506.rs b/tests/ui/enum/simple-enum-usage-8506.rs
new file mode 100644
index 00000000000..ebe095d84e4
--- /dev/null
+++ b/tests/ui/enum/simple-enum-usage-8506.rs
@@ -0,0 +1,14 @@
+// https://github.com/rust-lang/rust/issues/8506
+//@ run-pass
+#![allow(non_upper_case_globals)]
+
+#![allow(dead_code)]
+
+enum Either {
+    One,
+    Other(String,String)
+}
+
+static one : Either = Either::One;
+
+pub fn main () { }