about summary refs log tree commit diff
path: root/src/test/ui/enum-discriminant
diff options
context:
space:
mode:
authorCaio <c410.f3r@gmail.com>2023-01-04 16:44:30 -0300
committerCaio <c410.f3r@gmail.com>2023-01-04 16:44:30 -0300
commit7ffcedf6659d30c4a076d89b2586b385ad2f2d16 (patch)
treea353326a3626b1f89d2c8a205b5cfc185c489495 /src/test/ui/enum-discriminant
parentb7cdb635c4b973572307ad288466fba64533369c (diff)
downloadrust-7ffcedf6659d30c4a076d89b2586b385ad2f2d16.tar.gz
rust-7ffcedf6659d30c4a076d89b2586b385ad2f2d16.zip
Move tests
Diffstat (limited to 'src/test/ui/enum-discriminant')
-rw-r--r--src/test/ui/enum-discriminant/issue-72554.rs22
-rw-r--r--src/test/ui/enum-discriminant/issue-72554.stderr17
2 files changed, 39 insertions, 0 deletions
diff --git a/src/test/ui/enum-discriminant/issue-72554.rs b/src/test/ui/enum-discriminant/issue-72554.rs
new file mode 100644
index 00000000000..54f7e9ac592
--- /dev/null
+++ b/src/test/ui/enum-discriminant/issue-72554.rs
@@ -0,0 +1,22 @@
+use std::collections::BTreeSet;
+
+#[derive(Hash)]
+pub enum ElemDerived {
+    //~^ ERROR recursive type `ElemDerived` has infinite size
+    A(ElemDerived)
+}
+
+
+pub enum Elem {
+    Derived(ElemDerived)
+}
+
+pub struct Set(BTreeSet<Elem>);
+
+impl Set {
+    pub fn into_iter(self) -> impl Iterator<Item = Elem> {
+        self.0.into_iter()
+    }
+}
+
+fn main() {}
diff --git a/src/test/ui/enum-discriminant/issue-72554.stderr b/src/test/ui/enum-discriminant/issue-72554.stderr
new file mode 100644
index 00000000000..d12be539f7c
--- /dev/null
+++ b/src/test/ui/enum-discriminant/issue-72554.stderr
@@ -0,0 +1,17 @@
+error[E0072]: recursive type `ElemDerived` has infinite size
+  --> $DIR/issue-72554.rs:4:1
+   |
+LL | pub enum ElemDerived {
+   | ^^^^^^^^^^^^^^^^^^^^
+LL |
+LL |     A(ElemDerived)
+   |       ----------- recursive without indirection
+   |
+help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to break the cycle
+   |
+LL |     A(Box<ElemDerived>)
+   |       ++++           +
+
+error: aborting due to previous error
+
+For more information about this error, try `rustc --explain E0072`.