// Test that attempts to construct infinite types via impl trait fail // in a graceful way. // // Regression test for #38064. trait Quux {} fn foo() -> impl Quux { //~ ERROR cannot resolve opaque type struct Foo(T); impl Quux for Foo {} Foo(bar()) } fn bar() -> impl Quux { //~ ERROR cannot resolve opaque type struct Bar(T); impl Quux for Bar {} Bar(foo()) } // effectively: // struct Foo(Bar); // struct Bar(Foo); // should produce an error about infinite size fn main() { foo(); }