error[E0308]: mismatched types
  --> $DIR/generic-struct-self-unconstrained-inference-vars-69306.rs:6:28
   |
LL | impl<T> S0<T> {
   |      - expected this type parameter
LL |     const C: S0<u8> = Self(0);
   |                       ---- ^ expected type parameter `T`, found integer
   |                       |
   |                       arguments to this function are incorrect
   |
   = note: expected type parameter `T`
                        found type `{integer}`
note: tuple struct defined here
  --> $DIR/generic-struct-self-unconstrained-inference-vars-69306.rs:4:8
   |
LL | struct S0<T>(T);
   |        ^^

error[E0308]: mismatched types
  --> $DIR/generic-struct-self-unconstrained-inference-vars-69306.rs:6:23
   |
LL | impl<T> S0<T> {
   |      - found this type parameter
LL |     const C: S0<u8> = Self(0);
   |                       ^^^^^^^ expected `S0<u8>`, found `S0<T>`
   |
   = note: expected struct `S0<u8>`
              found struct `S0<T>`

error[E0308]: mismatched types
  --> $DIR/generic-struct-self-unconstrained-inference-vars-69306.rs:11:14
   |
LL | impl<T> S0<T> {
   |      - expected this type parameter
...
LL |         Self(0);
   |         ---- ^ expected type parameter `T`, found integer
   |         |
   |         arguments to this function are incorrect
   |
   = note: expected type parameter `T`
                        found type `{integer}`
note: tuple struct defined here
  --> $DIR/generic-struct-self-unconstrained-inference-vars-69306.rs:4:8
   |
LL | struct S0<T>(T);
   |        ^^

error[E0308]: mismatched types
  --> $DIR/generic-struct-self-unconstrained-inference-vars-69306.rs:28:14
   |
LL | impl<T> Foo<T> for <S0<T> as Fun>::Out {
   |      - expected this type parameter
LL |     fn foo() {
LL |         Self(0);
   |         ---- ^ expected type parameter `T`, found integer
   |         |
   |         arguments to this function are incorrect
   |
   = note: expected type parameter `T`
                        found type `{integer}`
note: tuple struct defined here
  --> $DIR/generic-struct-self-unconstrained-inference-vars-69306.rs:4:8
   |
LL | struct S0<T>(T);
   |        ^^

error[E0308]: mismatched types
  --> $DIR/generic-struct-self-unconstrained-inference-vars-69306.rs:34:32
   |
LL | impl<T> S1<T, u8> {
   |      - expected this type parameter
LL |     const C: S1<u8, u8> = Self(0, 1);
   |                           ---- ^ expected type parameter `T`, found integer
   |                           |
   |                           arguments to this function are incorrect
   |
   = note: expected type parameter `T`
                        found type `{integer}`
note: tuple struct defined here
  --> $DIR/generic-struct-self-unconstrained-inference-vars-69306.rs:32:8
   |
LL | struct S1<T, U>(T, U);
   |        ^^

error[E0308]: mismatched types
  --> $DIR/generic-struct-self-unconstrained-inference-vars-69306.rs:34:27
   |
LL | impl<T> S1<T, u8> {
   |      - found this type parameter
LL |     const C: S1<u8, u8> = Self(0, 1);
   |                           ^^^^^^^^^^ expected `S1<u8, u8>`, found `S1<T, u8>`
   |
   = note: expected struct `S1<u8, _>`
              found struct `S1<T, _>`

error[E0308]: mismatched types
  --> $DIR/generic-struct-self-unconstrained-inference-vars-69306.rs:42:14
   |
LL | impl<T> S2<T> {
   |      - expected type parameter
LL |     fn map<U>(x: U) -> S2<U> {
   |            - found type parameter
LL |         Self(x)
   |         ---- ^ expected type parameter `T`, found type parameter `U`
   |         |
   |         arguments to this function are incorrect
   |
   = note: expected type parameter `T`
              found type parameter `U`
   = note: a type parameter was expected, but a different one was found; you might be missing a type parameter or trait bound
   = note: for more information, visit https://doc.rust-lang.org/book/ch10-02-traits.html#traits-as-parameters
note: tuple struct defined here
  --> $DIR/generic-struct-self-unconstrained-inference-vars-69306.rs:39:8
   |
LL | struct S2<T>(T);
   |        ^^

error[E0308]: mismatched types
  --> $DIR/generic-struct-self-unconstrained-inference-vars-69306.rs:42:9
   |
LL | impl<T> S2<T> {
   |      - found type parameter
LL |     fn map<U>(x: U) -> S2<U> {
   |            -           ----- expected `S2<U>` because of return type
   |            |
   |            expected type parameter
LL |         Self(x)
   |         ^^^^^^^ expected `S2<U>`, found `S2<T>`
   |
   = note: expected struct `S2<U>`
              found struct `S2<T>`
   = note: a type parameter was expected, but a different one was found; you might be missing a type parameter or trait bound
   = note: for more information, visit https://doc.rust-lang.org/book/ch10-02-traits.html#traits-as-parameters

error: aborting due to 8 previous errors

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