error[E0666]: nested `impl Trait` is not allowed
  --> $DIR/where-allowed.rs:50:51
   |
LL | fn in_impl_Fn_parameter_in_parameters(_: &impl Fn(impl Debug)) { panic!() }
   |                                           --------^^^^^^^^^^-
   |                                           |       |
   |                                           |       nested `impl Trait` here
   |                                           outer `impl Trait`

error[E0666]: nested `impl Trait` is not allowed
  --> $DIR/where-allowed.rs:59:57
   |
LL | fn in_impl_Fn_parameter_in_return() -> &'static impl Fn(impl Debug) { panic!() }
   |                                                 --------^^^^^^^^^^-
   |                                                 |       |
   |                                                 |       nested `impl Trait` here
   |                                                 outer `impl Trait`

error[E0658]: `impl Trait` in associated types is unstable
  --> $DIR/where-allowed.rs:121:16
   |
LL |     type Out = impl Debug;
   |                ^^^^^^^^^^
   |
   = note: see issue #63063 <https://github.com/rust-lang/rust/issues/63063> for more information
   = help: add `#![feature(impl_trait_in_assoc_type)]` to the crate attributes to enable
   = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date

error[E0658]: `impl Trait` in type aliases is unstable
  --> $DIR/where-allowed.rs:158:23
   |
LL | type InTypeAlias<R> = impl Debug;
   |                       ^^^^^^^^^^
   |
   = note: see issue #63063 <https://github.com/rust-lang/rust/issues/63063> for more information
   = help: add `#![feature(type_alias_impl_trait)]` to the crate attributes to enable
   = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date

error[E0658]: `impl Trait` in type aliases is unstable
  --> $DIR/where-allowed.rs:161:39
   |
LL | type InReturnInTypeAlias<R> = fn() -> impl Debug;
   |                                       ^^^^^^^^^^
   |
   = note: see issue #63063 <https://github.com/rust-lang/rust/issues/63063> for more information
   = help: add `#![feature(type_alias_impl_trait)]` to the crate attributes to enable
   = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date

error[E0562]: `impl Trait` is not allowed in `fn` pointer parameters
  --> $DIR/where-allowed.rs:18:40
   |
LL | fn in_fn_parameter_in_parameters(_: fn(impl Debug)) { panic!() }
   |                                        ^^^^^^^^^^
   |
   = note: `impl Trait` is only allowed in arguments and return types of functions and methods

error[E0562]: `impl Trait` is not allowed in `fn` pointer return types
  --> $DIR/where-allowed.rs:22:42
   |
LL | fn in_fn_return_in_parameters(_: fn() -> impl Debug) { panic!() }
   |                                          ^^^^^^^^^^
   |
   = note: `impl Trait` is only allowed in arguments and return types of functions and methods

error[E0562]: `impl Trait` is not allowed in `fn` pointer parameters
  --> $DIR/where-allowed.rs:26:38
   |
LL | fn in_fn_parameter_in_return() -> fn(impl Debug) { panic!() }
   |                                      ^^^^^^^^^^
   |
   = note: `impl Trait` is only allowed in arguments and return types of functions and methods

error[E0562]: `impl Trait` is not allowed in `fn` pointer return types
  --> $DIR/where-allowed.rs:30:40
   |
LL | fn in_fn_return_in_return() -> fn() -> impl Debug { panic!() }
   |                                        ^^^^^^^^^^
   |
   = note: `impl Trait` is only allowed in arguments and return types of functions and methods

error[E0562]: `impl Trait` is not allowed in the parameters of `Fn` trait bounds
  --> $DIR/where-allowed.rs:34:49
   |
LL | fn in_dyn_Fn_parameter_in_parameters(_: &dyn Fn(impl Debug)) { panic!() }
   |                                                 ^^^^^^^^^^
   |
   = note: `impl Trait` is only allowed in arguments and return types of functions and methods

error[E0562]: `impl Trait` is not allowed in the return type of `Fn` trait bounds
  --> $DIR/where-allowed.rs:38:51
   |
LL | fn in_dyn_Fn_return_in_parameters(_: &dyn Fn() -> impl Debug) { panic!() }
   |                                                   ^^^^^^^^^^
   |
   = note: `impl Trait` is only allowed in arguments and return types of functions and methods

error[E0562]: `impl Trait` is not allowed in the parameters of `Fn` trait bounds
  --> $DIR/where-allowed.rs:42:55
   |
LL | fn in_dyn_Fn_parameter_in_return() -> &'static dyn Fn(impl Debug) { panic!() }
   |                                                       ^^^^^^^^^^
   |
   = note: `impl Trait` is only allowed in arguments and return types of functions and methods

error[E0562]: `impl Trait` is not allowed in the parameters of `Fn` trait bounds
  --> $DIR/where-allowed.rs:50:51
   |
LL | fn in_impl_Fn_parameter_in_parameters(_: &impl Fn(impl Debug)) { panic!() }
   |                                                   ^^^^^^^^^^
   |
   = note: `impl Trait` is only allowed in arguments and return types of functions and methods

error[E0562]: `impl Trait` is not allowed in the return type of `Fn` trait bounds
  --> $DIR/where-allowed.rs:55:53
   |
LL | fn in_impl_Fn_return_in_parameters(_: &impl Fn() -> impl Debug) { panic!() }
   |                                                     ^^^^^^^^^^
   |
   = note: `impl Trait` is only allowed in arguments and return types of functions and methods

error[E0562]: `impl Trait` is not allowed in the parameters of `Fn` trait bounds
  --> $DIR/where-allowed.rs:59:57
   |
LL | fn in_impl_Fn_parameter_in_return() -> &'static impl Fn(impl Debug) { panic!() }
   |                                                         ^^^^^^^^^^
   |
   = note: `impl Trait` is only allowed in arguments and return types of functions and methods

error[E0562]: `impl Trait` is not allowed in the parameters of `Fn` trait bounds
  --> $DIR/where-allowed.rs:68:38
   |
LL | fn in_Fn_parameter_in_generics<F: Fn(impl Debug)> (_: F) { panic!() }
   |                                      ^^^^^^^^^^
   |
   = note: `impl Trait` is only allowed in arguments and return types of functions and methods

error[E0562]: `impl Trait` is not allowed in the return type of `Fn` trait bounds
  --> $DIR/where-allowed.rs:72:40
   |
LL | fn in_Fn_return_in_generics<F: Fn() -> impl Debug> (_: F) { panic!() }
   |                                        ^^^^^^^^^^
   |
   = note: `impl Trait` is only allowed in arguments and return types of functions and methods

error[E0562]: `impl Trait` is not allowed in field types
  --> $DIR/where-allowed.rs:85:32
   |
LL | struct InBraceStructField { x: impl Debug }
   |                                ^^^^^^^^^^
   |
   = note: `impl Trait` is only allowed in arguments and return types of functions and methods

error[E0562]: `impl Trait` is not allowed in field types
  --> $DIR/where-allowed.rs:89:41
   |
LL | struct InAdtInBraceStructField { x: Vec<impl Debug> }
   |                                         ^^^^^^^^^^
   |
   = note: `impl Trait` is only allowed in arguments and return types of functions and methods

error[E0562]: `impl Trait` is not allowed in field types
  --> $DIR/where-allowed.rs:93:27
   |
LL | struct InTupleStructField(impl Debug);
   |                           ^^^^^^^^^^
   |
   = note: `impl Trait` is only allowed in arguments and return types of functions and methods

error[E0562]: `impl Trait` is not allowed in field types
  --> $DIR/where-allowed.rs:98:25
   |
LL |     InBraceVariant { x: impl Debug },
   |                         ^^^^^^^^^^
   |
   = note: `impl Trait` is only allowed in arguments and return types of functions and methods

error[E0562]: `impl Trait` is not allowed in field types
  --> $DIR/where-allowed.rs:100:20
   |
LL |     InTupleVariant(impl Debug),
   |                    ^^^^^^^^^^
   |
   = note: `impl Trait` is only allowed in arguments and return types of functions and methods

error[E0562]: `impl Trait` is not allowed in `extern fn` parameters
  --> $DIR/where-allowed.rs:142:33
   |
LL |     fn in_foreign_parameters(_: impl Debug);
   |                                 ^^^^^^^^^^
   |
   = note: `impl Trait` is only allowed in arguments and return types of functions and methods

error[E0562]: `impl Trait` is not allowed in `extern fn` return types
  --> $DIR/where-allowed.rs:145:31
   |
LL |     fn in_foreign_return() -> impl Debug;
   |                               ^^^^^^^^^^
   |
   = note: `impl Trait` is only allowed in arguments and return types of functions and methods

error[E0562]: `impl Trait` is not allowed in `fn` pointer return types
  --> $DIR/where-allowed.rs:161:39
   |
LL | type InReturnInTypeAlias<R> = fn() -> impl Debug;
   |                                       ^^^^^^^^^^
   |
   = note: `impl Trait` is only allowed in arguments and return types of functions and methods

error[E0562]: `impl Trait` is not allowed in traits
  --> $DIR/where-allowed.rs:166:16
   |
LL | impl PartialEq<impl Debug> for () {
   |                ^^^^^^^^^^
   |
   = note: `impl Trait` is only allowed in arguments and return types of functions and methods

error[E0562]: `impl Trait` is not allowed in impl headers
  --> $DIR/where-allowed.rs:171:24
   |
LL | impl PartialEq<()> for impl Debug {
   |                        ^^^^^^^^^^
   |
   = note: `impl Trait` is only allowed in arguments and return types of functions and methods

error[E0562]: `impl Trait` is not allowed in impl headers
  --> $DIR/where-allowed.rs:176:6
   |
LL | impl impl Debug {
   |      ^^^^^^^^^^
   |
   = note: `impl Trait` is only allowed in arguments and return types of functions and methods

error[E0562]: `impl Trait` is not allowed in impl headers
  --> $DIR/where-allowed.rs:182:24
   |
LL | impl InInherentImplAdt<impl Debug> {
   |                        ^^^^^^^^^^
   |
   = note: `impl Trait` is only allowed in arguments and return types of functions and methods

error[E0562]: `impl Trait` is not allowed in bounds
  --> $DIR/where-allowed.rs:188:11
   |
LL |     where impl Debug: Debug
   |           ^^^^^^^^^^
   |
   = note: `impl Trait` is only allowed in arguments and return types of functions and methods

error[E0562]: `impl Trait` is not allowed in bounds
  --> $DIR/where-allowed.rs:195:15
   |
LL |     where Vec<impl Debug>: Debug
   |               ^^^^^^^^^^
   |
   = note: `impl Trait` is only allowed in arguments and return types of functions and methods

error[E0562]: `impl Trait` is not allowed in bounds
  --> $DIR/where-allowed.rs:202:24
   |
LL |     where T: PartialEq<impl Debug>
   |                        ^^^^^^^^^^
   |
   = note: `impl Trait` is only allowed in arguments and return types of functions and methods

error[E0562]: `impl Trait` is not allowed in the parameters of `Fn` trait bounds
  --> $DIR/where-allowed.rs:209:17
   |
LL |     where T: Fn(impl Debug)
   |                 ^^^^^^^^^^
   |
   = note: `impl Trait` is only allowed in arguments and return types of functions and methods

error[E0562]: `impl Trait` is not allowed in the return type of `Fn` trait bounds
  --> $DIR/where-allowed.rs:216:22
   |
LL |     where T: Fn() -> impl Debug
   |                      ^^^^^^^^^^
   |
   = note: `impl Trait` is only allowed in arguments and return types of functions and methods

error[E0562]: `impl Trait` is not allowed in generic parameter defaults
  --> $DIR/where-allowed.rs:222:40
   |
LL | struct InStructGenericParamDefault<T = impl Debug>(T);
   |                                        ^^^^^^^^^^
   |
   = note: `impl Trait` is only allowed in arguments and return types of functions and methods

error[E0562]: `impl Trait` is not allowed in generic parameter defaults
  --> $DIR/where-allowed.rs:226:36
   |
LL | enum InEnumGenericParamDefault<T = impl Debug> { Variant(T) }
   |                                    ^^^^^^^^^^
   |
   = note: `impl Trait` is only allowed in arguments and return types of functions and methods

error[E0562]: `impl Trait` is not allowed in generic parameter defaults
  --> $DIR/where-allowed.rs:230:38
   |
LL | trait InTraitGenericParamDefault<T = impl Debug> {}
   |                                      ^^^^^^^^^^
   |
   = note: `impl Trait` is only allowed in arguments and return types of functions and methods

error[E0562]: `impl Trait` is not allowed in generic parameter defaults
  --> $DIR/where-allowed.rs:234:41
   |
LL | type InTypeAliasGenericParamDefault<T = impl Debug> = T;
   |                                         ^^^^^^^^^^
   |
   = note: `impl Trait` is only allowed in arguments and return types of functions and methods

error[E0562]: `impl Trait` is not allowed in generic parameter defaults
  --> $DIR/where-allowed.rs:238:11
   |
LL | impl <T = impl Debug> T {}
   |           ^^^^^^^^^^
   |
   = note: `impl Trait` is only allowed in arguments and return types of functions and methods

error[E0562]: `impl Trait` is not allowed in generic parameter defaults
  --> $DIR/where-allowed.rs:245:40
   |
LL | fn in_method_generic_param_default<T = impl Debug>(_: T) {}
   |                                        ^^^^^^^^^^
   |
   = note: `impl Trait` is only allowed in arguments and return types of functions and methods

error[E0562]: `impl Trait` is not allowed in the type of variable bindings
  --> $DIR/where-allowed.rs:251:29
   |
LL |     let _in_local_variable: impl Fn() = || {};
   |                             ^^^^^^^^^
   |
   = note: `impl Trait` is only allowed in arguments and return types of functions and methods

error[E0562]: `impl Trait` is not allowed in closure return types
  --> $DIR/where-allowed.rs:253:46
   |
LL |     let _in_return_in_local_variable = || -> impl Fn() { || {} };
   |                                              ^^^^^^^^^
   |
   = note: `impl Trait` is only allowed in arguments and return types of functions and methods

error[E0053]: method `in_trait_impl_return` has an incompatible type for trait
  --> $DIR/where-allowed.rs:128:34
   |
LL |     type Out = impl Debug;
   |                ---------- the expected opaque type
...
LL |     fn in_trait_impl_return() -> impl Debug { () }
   |                                  ^^^^^^^^^^ expected opaque type, found a different opaque type
   |
note: type in trait
  --> $DIR/where-allowed.rs:118:34
   |
LL |     fn in_trait_impl_return() -> Self::Out;
   |                                  ^^^^^^^^^
   = note: expected signature `fn() -> <() as DummyTrait>::Out`
              found signature `fn() -> impl Debug`
   = note: distinct uses of `impl Trait` result in different opaque types
help: change the output type to match the trait
   |
LL |     fn in_trait_impl_return() -> <() as DummyTrait>::Out { () }
   |                                  ~~~~~~~~~~~~~~~~~~~~~~~

error: defaults for type parameters are only allowed in `struct`, `enum`, `type`, or `trait` definitions
  --> $DIR/where-allowed.rs:245:36
   |
LL | fn in_method_generic_param_default<T = impl Debug>(_: T) {}
   |                                    ^^^^^^^^^^^^^^
   |
   = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
   = note: for more information, see issue #36887 <https://github.com/rust-lang/rust/issues/36887>
   = note: `#[deny(invalid_type_param_default)]` on by default

error: defaults for type parameters are only allowed in `struct`, `enum`, `type`, or `trait` definitions
  --> $DIR/where-allowed.rs:238:7
   |
LL | impl <T = impl Debug> T {}
   |       ^^^^^^^^^^^^^^
   |
   = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
   = note: for more information, see issue #36887 <https://github.com/rust-lang/rust/issues/36887>

error[E0283]: type annotations needed
  --> $DIR/where-allowed.rs:46:57
   |
LL | fn in_dyn_Fn_return_in_return() -> &'static dyn Fn() -> impl Debug { panic!() }
   |                                                         ^^^^^^^^^^ cannot infer type
   |
   = note: cannot satisfy `_: Debug`

error[E0283]: type annotations needed
  --> $DIR/where-allowed.rs:64:46
   |
LL | fn in_impl_Fn_return_in_return() -> &'static impl Fn() -> impl Debug { panic!() }
   |                                              ^^^^^^^^^^^^^^^^^^^^^^^ cannot infer type
   |
   = note: multiple `impl`s satisfying `_: Fn()` found in the following crates: `alloc`, `core`:
           - impl<A, F> Fn<A> for &F
             where A: Tuple, F: Fn<A>, F: ?Sized;
           - impl<Args, F, A> Fn<Args> for Box<F, A>
             where Args: Tuple, F: Fn<Args>, A: Allocator, F: ?Sized;

error[E0118]: no nominal type found for inherent implementation
  --> $DIR/where-allowed.rs:238:1
   |
LL | impl <T = impl Debug> T {}
   | ^^^^^^^^^^^^^^^^^^^^^^^ impl requires a nominal type
   |
   = note: either implement a trait on it or create a newtype to wrap it instead

error: unconstrained opaque type
  --> $DIR/where-allowed.rs:121:16
   |
LL |     type Out = impl Debug;
   |                ^^^^^^^^^^
   |
   = note: `Out` must be used in combination with a concrete type within the same impl

error: aborting due to 49 previous errors

Some errors have detailed explanations: E0053, E0118, E0283, E0562, E0658, E0666.
For more information about an error, try `rustc --explain E0053`.
Future incompatibility report: Future breakage diagnostic:
error: defaults for type parameters are only allowed in `struct`, `enum`, `type`, or `trait` definitions
  --> $DIR/where-allowed.rs:245:36
   |
LL | fn in_method_generic_param_default<T = impl Debug>(_: T) {}
   |                                    ^^^^^^^^^^^^^^
   |
   = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
   = note: for more information, see issue #36887 <https://github.com/rust-lang/rust/issues/36887>
   = note: `#[deny(invalid_type_param_default)]` on by default

Future breakage diagnostic:
error: defaults for type parameters are only allowed in `struct`, `enum`, `type`, or `trait` definitions
  --> $DIR/where-allowed.rs:238:7
   |
LL | impl <T = impl Debug> T {}
   |       ^^^^^^^^^^^^^^
   |
   = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
   = note: for more information, see issue #36887 <https://github.com/rust-lang/rust/issues/36887>
   = note: `#[deny(invalid_type_param_default)]` on by default

