From dc0db358abe19481e475e10c32149b53370f1a1c Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Thu, 30 May 2024 05:57:31 +0200 Subject: Merging upstream version 1.72.1+dfsg1. Signed-off-by: Daniel Baumann --- tests/ui/structs-enums/issue-3008-1.rs | 12 ++++++++++++ tests/ui/structs-enums/issue-3008-1.stderr | 17 +++++++++++++++++ tests/ui/structs-enums/issue-3008-2.rs | 6 ++++++ tests/ui/structs-enums/issue-3008-2.stderr | 14 ++++++++++++++ tests/ui/structs-enums/issue-3008-3.rs | 10 ++++++++++ tests/ui/structs-enums/issue-3008-3.stderr | 14 ++++++++++++++ 6 files changed, 73 insertions(+) create mode 100644 tests/ui/structs-enums/issue-3008-1.rs create mode 100644 tests/ui/structs-enums/issue-3008-1.stderr create mode 100644 tests/ui/structs-enums/issue-3008-2.rs create mode 100644 tests/ui/structs-enums/issue-3008-2.stderr create mode 100644 tests/ui/structs-enums/issue-3008-3.rs create mode 100644 tests/ui/structs-enums/issue-3008-3.stderr (limited to 'tests/ui/structs-enums') diff --git a/tests/ui/structs-enums/issue-3008-1.rs b/tests/ui/structs-enums/issue-3008-1.rs new file mode 100644 index 000000000..1124969e6 --- /dev/null +++ b/tests/ui/structs-enums/issue-3008-1.rs @@ -0,0 +1,12 @@ +enum Foo { + Foo_(Bar) +} + +enum Bar { + //~^ ERROR recursive type `Bar` has infinite size + BarNone, + BarSome(Bar) +} + +fn main() { +} diff --git a/tests/ui/structs-enums/issue-3008-1.stderr b/tests/ui/structs-enums/issue-3008-1.stderr new file mode 100644 index 000000000..be25b9091 --- /dev/null +++ b/tests/ui/structs-enums/issue-3008-1.stderr @@ -0,0 +1,17 @@ +error[E0072]: recursive type `Bar` has infinite size + --> $DIR/issue-3008-1.rs:5:1 + | +LL | enum Bar { + | ^^^^^^^^ +... +LL | BarSome(Bar) + | --- recursive without indirection + | +help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to break the cycle + | +LL | BarSome(Box) + | ++++ + + +error: aborting due to previous error + +For more information about this error, try `rustc --explain E0072`. diff --git a/tests/ui/structs-enums/issue-3008-2.rs b/tests/ui/structs-enums/issue-3008-2.rs new file mode 100644 index 000000000..5846c69da --- /dev/null +++ b/tests/ui/structs-enums/issue-3008-2.rs @@ -0,0 +1,6 @@ +enum Foo { Foo_(Bar) } +struct Bar { x: Bar } +//~^ ERROR E0072 + +fn main() { +} diff --git a/tests/ui/structs-enums/issue-3008-2.stderr b/tests/ui/structs-enums/issue-3008-2.stderr new file mode 100644 index 000000000..858a8fd6a --- /dev/null +++ b/tests/ui/structs-enums/issue-3008-2.stderr @@ -0,0 +1,14 @@ +error[E0072]: recursive type `Bar` has infinite size + --> $DIR/issue-3008-2.rs:2:1 + | +LL | struct Bar { x: Bar } + | ^^^^^^^^^^ --- recursive without indirection + | +help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to break the cycle + | +LL | struct Bar { x: Box } + | ++++ + + +error: aborting due to previous error + +For more information about this error, try `rustc --explain E0072`. diff --git a/tests/ui/structs-enums/issue-3008-3.rs b/tests/ui/structs-enums/issue-3008-3.rs new file mode 100644 index 000000000..212eb2eb8 --- /dev/null +++ b/tests/ui/structs-enums/issue-3008-3.rs @@ -0,0 +1,10 @@ +use std::marker; + +enum E1 { V1(E2), } +enum E2 { V2(E2, marker::PhantomData), } +//~^ ERROR recursive type `E2` has infinite size + +impl E1 { fn foo(&self) {} } + +fn main() { +} diff --git a/tests/ui/structs-enums/issue-3008-3.stderr b/tests/ui/structs-enums/issue-3008-3.stderr new file mode 100644 index 000000000..a1a81e293 --- /dev/null +++ b/tests/ui/structs-enums/issue-3008-3.stderr @@ -0,0 +1,14 @@ +error[E0072]: recursive type `E2` has infinite size + --> $DIR/issue-3008-3.rs:4:1 + | +LL | enum E2 { V2(E2, marker::PhantomData), } + | ^^^^^^^^^^ ------ recursive without indirection + | +help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to break the cycle + | +LL | enum E2 { V2(Box>, marker::PhantomData), } + | ++++ + + +error: aborting due to previous error + +For more information about this error, try `rustc --explain E0072`. -- cgit v1.2.3