about summary refs log tree commit diff
diff options
context:
space:
mode:
authorEsteban Küber <esteban@kuber.com.ar>2020-05-28 18:20:37 -0700
committerEsteban Küber <esteban@kuber.com.ar>2020-06-01 09:44:05 -0700
commiteb8d9002fa3802ebb78d6854ddec207cbaf6aa18 (patch)
tree8252d6d45eaa6493490287bfa7284dc67a496133
parentd3cba254e464303a6495942f3a831c2bbd7f1768 (diff)
downloadrust-eb8d9002fa3802ebb78d6854ddec207cbaf6aa18.tar.gz
rust-eb8d9002fa3802ebb78d6854ddec207cbaf6aa18.zip
Add test for #72554.
-rw-r--r--src/test/ui/issues/issue-72554.rs20
-rw-r--r--src/test/ui/issues/issue-72554.stderr13
2 files changed, 33 insertions, 0 deletions
diff --git a/src/test/ui/issues/issue-72554.rs b/src/test/ui/issues/issue-72554.rs
new file mode 100644
index 00000000000..47aca05d778
--- /dev/null
+++ b/src/test/ui/issues/issue-72554.rs
@@ -0,0 +1,20 @@
+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/issues/issue-72554.stderr b/src/test/ui/issues/issue-72554.stderr
new file mode 100644
index 00000000000..9db65f4a2ee
--- /dev/null
+++ b/src/test/ui/issues/issue-72554.stderr
@@ -0,0 +1,13 @@
+error[E0072]: recursive type `ElemDerived` has infinite size
+  --> $DIR/issue-72554.rs:4:1
+   |
+LL | pub enum ElemDerived {
+   | ^^^^^^^^^^^^^^^^^^^^ recursive type has infinite size
+LL |     A(ElemDerived)
+   |       ----------- recursive without indirection
+   |
+   = help: insert indirection (e.g., a `Box`, `Rc`, or `&`) at some point to make `ElemDerived` representable
+
+error: aborting due to previous error
+
+For more information about this error, try `rustc --explain E0072`.