error[E0401]: can't use generic parameters from outer function
  --> $DIR/E0401.rs:4:39
   |
LL | fn foo<T>(x: T) {
   |        - type parameter from outer function
LL |     fn bfnr<U, V: Baz<U>, W: Fn()>(y: T) {
   |             -                         ^ use of generic parameter from outer function
   |             |
   |             help: try using a local generic parameter instead: `T,`

error[E0401]: can't use generic parameters from outer function
  --> $DIR/E0401.rs:9:16
   |
LL | fn foo<T>(x: T) {
   |        - type parameter from outer function
...
LL |     fn baz<U,
   |            - help: try using a local generic parameter instead: `T,`
...
LL |            (y: T) {
   |                ^ use of generic parameter from outer function

error[E0401]: can't use generic parameters from outer function
  --> $DIR/E0401.rs:24:25
   |
LL | impl<T> Iterator for A<T> {
   | ---- `Self` type implicitly declared here, by this `impl`
...
LL |         fn helper(sel: &Self) -> u8 {
   |                         ^^^^
   |                         |
   |                         use of generic parameter from outer function
   |                         use a type here instead

error[E0282]: type annotations needed
  --> $DIR/E0401.rs:11:5
   |
LL |     bfnr(x);
   |     ^^^^ cannot infer type of the type parameter `U` declared on the function `bfnr`
   |
help: consider specifying the generic arguments
   |
LL |     bfnr::<U, V, W>(x);
   |         +++++++++++

error[E0283]: type annotations needed
  --> $DIR/E0401.rs:11:5
   |
LL |     bfnr(x);
   |     ^^^^ cannot infer type of the type parameter `W` declared on the function `bfnr`
   |
   = 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;
note: required by a bound in `bfnr`
  --> $DIR/E0401.rs:4:30
   |
LL |     fn bfnr<U, V: Baz<U>, W: Fn()>(y: T) {
   |                              ^^^^ required by this bound in `bfnr`
help: consider specifying the generic arguments
   |
LL |     bfnr::<U, V, W>(x);
   |         +++++++++++

error: aborting due to 5 previous errors

Some errors have detailed explanations: E0282, E0283, E0401.
For more information about an error, try `rustc --explain E0282`.
