error[E0720]: cannot resolve opaque type
  --> $DIR/recursive-impl-trait-type-indirect.rs:7:22
   |
LL | fn option(i: i32) -> impl Sized {
   |                      ^^^^^^^^^^ recursive opaque type
LL |
LL |     if i < 0 { None } else { Some((option(i - 1), i)) }
   |                ----          ------------------------ returning here with type `Option<(impl Sized, i32)>`
   |                |
   |                returning here with type `Option<(impl Sized, i32)>`

error[E0720]: cannot resolve opaque type
  --> $DIR/recursive-impl-trait-type-indirect.rs:12:15
   |
LL | fn tuple() -> impl Sized {
   |               ^^^^^^^^^^ recursive opaque type
LL |
LL |     (tuple(),)
   |     ---------- returning here with type `(impl Sized,)`

error[E0720]: cannot resolve opaque type
  --> $DIR/recursive-impl-trait-type-indirect.rs:17:15
   |
LL | fn array() -> impl Sized {
   |               ^^^^^^^^^^ recursive opaque type
LL |
LL |     [array()]
   |     --------- returning here with type `[impl Sized; 1]`

error[E0720]: cannot resolve opaque type
  --> $DIR/recursive-impl-trait-type-indirect.rs:22:13
   |
LL | fn ptr() -> impl Sized {
   |             ^^^^^^^^^^ recursive opaque type
LL |
LL |     &ptr() as *const _
   |     ------------------ returning here with type `*const impl Sized`

error[E0720]: cannot resolve opaque type
  --> $DIR/recursive-impl-trait-type-indirect.rs:27:16
   |
LL | fn fn_ptr() -> impl Sized {
   |                ^^^^^^^^^^ recursive opaque type
LL |
LL |     fn_ptr as fn() -> _
   |     ------------------- returning here with type `fn() -> impl Sized`

error[E0720]: cannot resolve opaque type
  --> $DIR/recursive-impl-trait-type-indirect.rs:32:25
   |
LL |   fn closure_capture() -> impl Sized {
   |                           ^^^^^^^^^^ recursive opaque type
...
LL | /     move || {
LL | |         x;
LL | |     }
   | |_____- returning here with type `[closure@$DIR/recursive-impl-trait-type-indirect.rs:35:5: 37:6]`

error[E0720]: cannot resolve opaque type
  --> $DIR/recursive-impl-trait-type-indirect.rs:40:29
   |
LL |   fn closure_ref_capture() -> impl Sized {
   |                               ^^^^^^^^^^ recursive opaque type
...
LL | /     move || {
LL | |         &x;
LL | |     }
   | |_____- returning here with type `[closure@$DIR/recursive-impl-trait-type-indirect.rs:43:5: 45:6]`

error[E0720]: cannot resolve opaque type
  --> $DIR/recursive-impl-trait-type-indirect.rs:48:21
   |
LL | fn closure_sig() -> impl Sized {
   |                     ^^^^^^^^^^ recursive opaque type
LL |
LL |     || closure_sig()
   |     ---------------- returning here with type `[closure@$DIR/recursive-impl-trait-type-indirect.rs:50:5: 50:21]`

error[E0720]: cannot resolve opaque type
  --> $DIR/recursive-impl-trait-type-indirect.rs:53:23
   |
LL | fn generator_sig() -> impl Sized {
   |                       ^^^^^^^^^^ recursive opaque type
LL |
LL |     || generator_sig()
   |     ------------------ returning here with type `[closure@$DIR/recursive-impl-trait-type-indirect.rs:55:5: 55:23]`

error[E0720]: cannot resolve opaque type
  --> $DIR/recursive-impl-trait-type-indirect.rs:58:27
   |
LL |   fn generator_capture() -> impl Sized {
   |                             ^^^^^^^^^^ recursive opaque type
...
LL | /     move || {
LL | |         yield;
LL | |         x;
LL | |     }
   | |_____- returning here with type `[generator@$DIR/recursive-impl-trait-type-indirect.rs:61:5: 64:6 {()}]`

error[E0720]: cannot resolve opaque type
  --> $DIR/recursive-impl-trait-type-indirect.rs:67:35
   |
LL | fn substs_change<T: 'static>() -> impl Sized {
   |                                   ^^^^^^^^^^ recursive opaque type
LL |
LL |     (substs_change::<&T>(),)
   |     ------------------------ returning here with type `(impl Sized,)`

error[E0720]: cannot resolve opaque type
  --> $DIR/recursive-impl-trait-type-indirect.rs:72:24
   |
LL |   fn generator_hold() -> impl Sized {
   |                          ^^^^^^^^^^ recursive opaque type
LL |
LL | /     move || {
LL | |         let x = generator_hold();
LL | |         yield;
LL | |         x;
LL | |     }
   | |_____- returning here with type `[generator@$DIR/recursive-impl-trait-type-indirect.rs:74:5: 78:6 {impl Sized, ()}]`

error[E0720]: cannot resolve opaque type
  --> $DIR/recursive-impl-trait-type-indirect.rs:86:26
   |
LL | fn mutual_recursion() -> impl Sync {
   |                          ^^^^^^^^^ recursive opaque type
LL |
LL |     mutual_recursion_b()
   |     -------------------- returning here with type `impl Sized`
...
LL | fn mutual_recursion_b() -> impl Sized {
   |                            ---------- returning this opaque type `impl Sized`

error[E0720]: cannot resolve opaque type
  --> $DIR/recursive-impl-trait-type-indirect.rs:91:28
   |
LL | fn mutual_recursion() -> impl Sync {
   |                          --------- returning this opaque type `impl Sync`
...
LL | fn mutual_recursion_b() -> impl Sized {
   |                            ^^^^^^^^^^ recursive opaque type
LL |
LL |     mutual_recursion()
   |     ------------------ returning here with type `impl Sync`

error: aborting due to 14 previous errors

For more information about this error, try `rustc --explain E0720`.
