]> git.lizzy.rs Git - rust.git/blob - src/test/ui/impl-trait/issues/infinite-impl-trait-issue-38064.rs
Auto merge of #103390 - compiler-errors:metadata-mod-regions, r=eholk
[rust.git] / src / test / ui / impl-trait / issues / infinite-impl-trait-issue-38064.rs
1 // Test that attempts to construct infinite types via impl trait fail
2 // in a graceful way.
3 //
4 // Regression test for #38064.
5
6 trait Quux {}
7
8 fn foo() -> impl Quux { //~ ERROR cannot resolve opaque type
9     struct Foo<T>(T);
10     impl<T> Quux for Foo<T> {}
11     Foo(bar())
12 }
13
14 fn bar() -> impl Quux { //~ ERROR cannot resolve opaque type
15     struct Bar<T>(T);
16     impl<T> Quux for Bar<T> {}
17     Bar(foo())
18 }
19
20 // effectively:
21 //     struct Foo(Bar);
22 //     struct Bar(Foo);
23 // should produce an error about infinite size
24
25 fn main() { foo(); }