error[E0412]: cannot find type `N` in this scope
  --> $DIR/missing-type-parameter2.rs:6:8
   |
LL | struct X<const N: u8>();
   | ------------------------ similarly named struct `X` defined here
LL | 
LL | impl X<N> {}
   |        ^
   |
help: a struct with a similar name exists
   |
LL | impl X<X> {}
   |        ~
help: you might be missing a type parameter
   |
LL | impl<N> X<N> {}
   |     +++

error[E0412]: cannot find type `N` in this scope
  --> $DIR/missing-type-parameter2.rs:9:28
   |
LL | impl<T, const A: u8 = 2> X<N> {}
   |      -                     ^
   |      |
   |      similarly named type parameter `T` defined here
   |
help: a type parameter with a similar name exists
   |
LL | impl<T, const A: u8 = 2> X<T> {}
   |                            ~
help: you might be missing a type parameter
   |
LL | impl<T, const A: u8 = 2, N> X<N> {}
   |                        +++

error[E0412]: cannot find type `T` in this scope
  --> $DIR/missing-type-parameter2.rs:14:20
   |
LL | struct X<const N: u8>();
   | ------------------------ similarly named struct `X` defined here
...
LL | fn foo(_: T) where T: Send {}
   |                    ^
   |
help: a struct with a similar name exists
   |
LL | fn foo(_: T) where X: Send {}
   |                    ~
help: you might be missing a type parameter
   |
LL | fn foo<T>(_: T) where T: Send {}
   |       +++

error[E0412]: cannot find type `T` in this scope
  --> $DIR/missing-type-parameter2.rs:14:11
   |
LL | struct X<const N: u8>();
   | ------------------------ similarly named struct `X` defined here
...
LL | fn foo(_: T) where T: Send {}
   |           ^
   |
help: a struct with a similar name exists
   |
LL | fn foo(_: X) where T: Send {}
   |           ~
help: you might be missing a type parameter
   |
LL | fn foo<T>(_: T) where T: Send {}
   |       +++

error[E0412]: cannot find type `A` in this scope
  --> $DIR/missing-type-parameter2.rs:18:24
   |
LL | struct X<const N: u8>();
   | ------------------------ similarly named struct `X` defined here
...
LL | fn bar<const N: u8>(_: A) {}
   |                        ^
   |
help: a struct with a similar name exists
   |
LL | fn bar<const N: u8>(_: X) {}
   |                        ~
help: you might be missing a type parameter
   |
LL | fn bar<const N: u8, A>(_: A) {}
   |                   +++

error[E0747]: unresolved item provided when a constant was expected
  --> $DIR/missing-type-parameter2.rs:6:8
   |
LL | impl X<N> {}
   |        ^
   |
help: if this generic argument was intended as a const parameter, surround it with braces
   |
LL | impl X<{ N }> {}
   |        +   +

error: defaults for const parameters are only allowed in `struct`, `enum`, `type`, or `trait` definitions
  --> $DIR/missing-type-parameter2.rs:9:15
   |
LL | impl<T, const A: u8 = 2> X<N> {}
   |               ^

error[E0747]: unresolved item provided when a constant was expected
  --> $DIR/missing-type-parameter2.rs:9:28
   |
LL | impl<T, const A: u8 = 2> X<N> {}
   |                            ^
   |
help: if this generic argument was intended as a const parameter, surround it with braces
   |
LL | impl<T, const A: u8 = 2> X<{ N }> {}
   |                            +   +

error: aborting due to 8 previous errors

Some errors have detailed explanations: E0412, E0747.
For more information about an error, try `rustc --explain E0412`.
