about summary refs log tree commit diff
diff options
context:
space:
mode:
authorvarkor <github@varkor.com>2019-10-07 22:24:04 +0100
committervarkor <github@varkor.com>2019-10-07 22:24:04 +0100
commitc99074490bc4e0d8a248bf807dfc3426341d7acd (patch)
tree184881ed1453986789c114e09084de26e8422259
parent85b7aa2cfbf8c5dbc642d60890b7cf710f1a7d60 (diff)
downloadrust-c99074490bc4e0d8a248bf807dfc3426341d7acd.tar.gz
rust-c99074490bc4e0d8a248bf807dfc3426341d7acd.zip
Add a regression test for #57271
-rw-r--r--src/test/ui/issues/auxiliary/issue-57271-lib.rs11
-rw-r--r--src/test/ui/issues/issue-57271.rs24
-rw-r--r--src/test/ui/issues/issue-57271.stderr25
3 files changed, 60 insertions, 0 deletions
diff --git a/src/test/ui/issues/auxiliary/issue-57271-lib.rs b/src/test/ui/issues/auxiliary/issue-57271-lib.rs
new file mode 100644
index 00000000000..ff625668a9d
--- /dev/null
+++ b/src/test/ui/issues/auxiliary/issue-57271-lib.rs
@@ -0,0 +1,11 @@
+#[derive(Copy, Clone, Debug, Eq, PartialEq, Hash)]
+pub enum BaseType {
+    Byte,
+    Char,
+    Double,
+    Float,
+    Int,
+    Long,
+    Short,
+    Boolean,
+}
diff --git a/src/test/ui/issues/issue-57271.rs b/src/test/ui/issues/issue-57271.rs
new file mode 100644
index 00000000000..9940fecbeed
--- /dev/null
+++ b/src/test/ui/issues/issue-57271.rs
@@ -0,0 +1,24 @@
+// aux-build:issue-57271-lib.rs
+
+extern crate issue_57271_lib;
+
+use issue_57271_lib::BaseType;
+
+pub enum ObjectType { //~ ERROR recursive type `ObjectType` has infinite size
+    Class(ClassTypeSignature),
+    Array(TypeSignature),
+    TypeVariable(()),
+}
+
+pub struct ClassTypeSignature {
+    pub package: (),
+    pub class: (),
+    pub inner: (),
+}
+
+pub enum TypeSignature { //~ ERROR recursive type `TypeSignature` has infinite size
+    Base(BaseType),
+    Object(ObjectType),
+}
+
+fn main() {}
diff --git a/src/test/ui/issues/issue-57271.stderr b/src/test/ui/issues/issue-57271.stderr
new file mode 100644
index 00000000000..4f164624f7a
--- /dev/null
+++ b/src/test/ui/issues/issue-57271.stderr
@@ -0,0 +1,25 @@
+error[E0072]: recursive type `ObjectType` has infinite size
+  --> $DIR/issue-57271.rs:7:1
+   |
+LL | pub enum ObjectType {
+   | ^^^^^^^^^^^^^^^^^^^ recursive type has infinite size
+LL |     Class(ClassTypeSignature),
+LL |     Array(TypeSignature),
+   |           ------------- recursive without indirection
+   |
+   = help: insert indirection (e.g., a `Box`, `Rc`, or `&`) at some point to make `ObjectType` representable
+
+error[E0072]: recursive type `TypeSignature` has infinite size
+  --> $DIR/issue-57271.rs:19:1
+   |
+LL | pub enum TypeSignature {
+   | ^^^^^^^^^^^^^^^^^^^^^^ recursive type has infinite size
+LL |     Base(BaseType),
+LL |     Object(ObjectType),
+   |            ---------- recursive without indirection
+   |
+   = help: insert indirection (e.g., a `Box`, `Rc`, or `&`) at some point to make `TypeSignature` representable
+
+error: aborting due to 2 previous errors
+
+For more information about this error, try `rustc --explain E0072`.