diff options
Diffstat (limited to 'src/test/ui/infinite')
-rw-r--r-- | src/test/ui/infinite/infinite-struct.rs | 7 | ||||
-rw-r--r-- | src/test/ui/infinite/infinite-struct.stderr | 19 | ||||
-rw-r--r-- | src/test/ui/infinite/infinite-tag-type-recursion.stderr | 4 |
3 files changed, 23 insertions, 7 deletions
diff --git a/src/test/ui/infinite/infinite-struct.rs b/src/test/ui/infinite/infinite-struct.rs index 74185dc59..f08e10f6b 100644 --- a/src/test/ui/infinite/infinite-struct.rs +++ b/src/test/ui/infinite/infinite-struct.rs @@ -6,4 +6,11 @@ fn foo() -> Take { Take(loop {}) } +// mutually infinite structs +struct Foo { //~ ERROR has infinite size + x: Bar<Foo>, +} + +struct Bar<T>([T; 1]); + fn main() {} diff --git a/src/test/ui/infinite/infinite-struct.stderr b/src/test/ui/infinite/infinite-struct.stderr index 5a6d13786..b6c72b1de 100644 --- a/src/test/ui/infinite/infinite-struct.stderr +++ b/src/test/ui/infinite/infinite-struct.stderr @@ -3,14 +3,25 @@ error[E0072]: recursive type `Take` has infinite size | LL | struct Take(Take); | ^^^^^^^^^^^ ---- recursive without indirection - | | - | recursive type has infinite size | -help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to make `Take` representable +help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to break the cycle | LL | struct Take(Box<Take>); | ++++ + -error: aborting due to previous error +error[E0072]: recursive type `Foo` has infinite size + --> $DIR/infinite-struct.rs:10:1 + | +LL | struct Foo { + | ^^^^^^^^^^ +LL | x: Bar<Foo>, + | --- recursive without indirection + | +help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to break the cycle + | +LL | x: Bar<Box<Foo>>, + | ++++ + + +error: aborting due to 2 previous errors For more information about this error, try `rustc --explain E0072`. diff --git a/src/test/ui/infinite/infinite-tag-type-recursion.stderr b/src/test/ui/infinite/infinite-tag-type-recursion.stderr index d2dad4b91..513bbfc1b 100644 --- a/src/test/ui/infinite/infinite-tag-type-recursion.stderr +++ b/src/test/ui/infinite/infinite-tag-type-recursion.stderr @@ -3,10 +3,8 @@ error[E0072]: recursive type `MList` has infinite size | LL | enum MList { Cons(isize, MList), Nil } | ^^^^^^^^^^ ----- recursive without indirection - | | - | recursive type has infinite size | -help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to make `MList` representable +help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to break the cycle | LL | enum MList { Cons(isize, Box<MList>), Nil } | ++++ + |