error[E0423]: expected value, found type alias `m1::S`
  --> $DIR/namespace-mix.rs:34:11
   |
LL |     check(m1::S);
   |           ^^^^^
   |
   = note: can't use a type alias as a constructor
help: a tuple struct with a similar name exists
   |
LL |     check(m1::TS);
   |               ^^
help: possible better candidates are found in other modules, you can import them into scope
   |
LL | use m2::S;
   |
LL | use namespace_mix::xm2::S;
   |

error[E0423]: expected value, found type alias `xm1::S`
  --> $DIR/namespace-mix.rs:40:11
   |
LL |     check(xm1::S);
   |           ^^^^^^
   |
   = note: can't use a type alias as a constructor
help: a tuple struct with a similar name exists
   |
LL |     check(xm1::TS);
   |                ^^
help: possible better candidates are found in other modules, you can import them into scope
   |
LL | use m2::S;
   |
LL | use namespace_mix::xm2::S;
   |

error[E0423]: expected value, found struct variant `m7::V`
  --> $DIR/namespace-mix.rs:100:11
   |
LL |     check(m7::V);
   |           ^^^^^ did you mean `m7::V { /* fields */ }`?
help: a tuple variant with a similar name exists
   |
LL |     check(m7::TV);
   |               ^^
help: possible better candidates are found in other modules, you can import them into scope
   |
LL | use m8::V;
   |
LL | use namespace_mix::xm8::V;
   |

error[E0423]: expected value, found struct variant `xm7::V`
  --> $DIR/namespace-mix.rs:106:11
   |
LL |     check(xm7::V);
   |           ^^^^^^ did you mean `xm7::V { /* fields */ }`?
help: a tuple variant with a similar name exists
   |
LL |     check(xm7::TV);
   |                ^^
help: possible better candidates are found in other modules, you can import them into scope
   |
LL | use m8::V;
   |
LL | use namespace_mix::xm8::V;
   |

error[E0277]: the trait bound `c::Item: Impossible` is not satisfied
  --> $DIR/namespace-mix.rs:33:5
   |
LL | fn check<T: Impossible>(_: T) {}
   | ----------------------------- required by `check`
...
LL |     check(m1::S{});
   |     ^^^^^ the trait `Impossible` is not implemented for `c::Item`

error[E0277]: the trait bound `c::S: Impossible` is not satisfied
  --> $DIR/namespace-mix.rs:35:5
   |
LL | fn check<T: Impossible>(_: T) {}
   | ----------------------------- required by `check`
...
LL |     check(m2::S{});
   |     ^^^^^ the trait `Impossible` is not implemented for `c::S`

error[E0277]: the trait bound `c::Item: Impossible` is not satisfied
  --> $DIR/namespace-mix.rs:36:5
   |
LL | fn check<T: Impossible>(_: T) {}
   | ----------------------------- required by `check`
...
LL |     check(m2::S);
   |     ^^^^^ the trait `Impossible` is not implemented for `c::Item`

error[E0277]: the trait bound `namespace_mix::c::Item: Impossible` is not satisfied
  --> $DIR/namespace-mix.rs:39:5
   |
LL | fn check<T: Impossible>(_: T) {}
   | ----------------------------- required by `check`
...
LL |     check(xm1::S{});
   |     ^^^^^ the trait `Impossible` is not implemented for `namespace_mix::c::Item`

error[E0277]: the trait bound `namespace_mix::c::S: Impossible` is not satisfied
  --> $DIR/namespace-mix.rs:41:5
   |
LL | fn check<T: Impossible>(_: T) {}
   | ----------------------------- required by `check`
...
LL |     check(xm2::S{});
   |     ^^^^^ the trait `Impossible` is not implemented for `namespace_mix::c::S`

error[E0277]: the trait bound `namespace_mix::c::Item: Impossible` is not satisfied
  --> $DIR/namespace-mix.rs:42:5
   |
LL | fn check<T: Impossible>(_: T) {}
   | ----------------------------- required by `check`
...
LL |     check(xm2::S);
   |     ^^^^^ the trait `Impossible` is not implemented for `namespace_mix::c::Item`

error[E0277]: the trait bound `c::Item: Impossible` is not satisfied
  --> $DIR/namespace-mix.rs:55:5
   |
LL | fn check<T: Impossible>(_: T) {}
   | ----------------------------- required by `check`
...
LL |     check(m3::TS{});
   |     ^^^^^ the trait `Impossible` is not implemented for `c::Item`

error[E0277]: the trait bound `fn() -> c::TS {c::TS}: Impossible` is not satisfied
  --> $DIR/namespace-mix.rs:56:5
   |
LL | fn check<T: Impossible>(_: T) {}
   | ----------------------------- required by `check`
...
LL |     check(m3::TS);
   |     ^^^^^ the trait `Impossible` is not implemented for `fn() -> c::TS {c::TS}`

error[E0277]: the trait bound `c::TS: Impossible` is not satisfied
  --> $DIR/namespace-mix.rs:57:5
   |
LL | fn check<T: Impossible>(_: T) {}
   | ----------------------------- required by `check`
...
LL |     check(m4::TS{});
   |     ^^^^^ the trait `Impossible` is not implemented for `c::TS`

error[E0277]: the trait bound `c::Item: Impossible` is not satisfied
  --> $DIR/namespace-mix.rs:58:5
   |
LL | fn check<T: Impossible>(_: T) {}
   | ----------------------------- required by `check`
...
LL |     check(m4::TS);
   |     ^^^^^ the trait `Impossible` is not implemented for `c::Item`

error[E0277]: the trait bound `namespace_mix::c::Item: Impossible` is not satisfied
  --> $DIR/namespace-mix.rs:61:5
   |
LL | fn check<T: Impossible>(_: T) {}
   | ----------------------------- required by `check`
...
LL |     check(xm3::TS{});
   |     ^^^^^ the trait `Impossible` is not implemented for `namespace_mix::c::Item`

error[E0277]: the trait bound `fn() -> namespace_mix::c::TS {namespace_mix::c::TS}: Impossible` is not satisfied
  --> $DIR/namespace-mix.rs:62:5
   |
LL | fn check<T: Impossible>(_: T) {}
   | ----------------------------- required by `check`
...
LL |     check(xm3::TS);
   |     ^^^^^ the trait `Impossible` is not implemented for `fn() -> namespace_mix::c::TS {namespace_mix::c::TS}`

error[E0277]: the trait bound `namespace_mix::c::TS: Impossible` is not satisfied
  --> $DIR/namespace-mix.rs:63:5
   |
LL | fn check<T: Impossible>(_: T) {}
   | ----------------------------- required by `check`
...
LL |     check(xm4::TS{});
   |     ^^^^^ the trait `Impossible` is not implemented for `namespace_mix::c::TS`

error[E0277]: the trait bound `namespace_mix::c::Item: Impossible` is not satisfied
  --> $DIR/namespace-mix.rs:64:5
   |
LL | fn check<T: Impossible>(_: T) {}
   | ----------------------------- required by `check`
...
LL |     check(xm4::TS);
   |     ^^^^^ the trait `Impossible` is not implemented for `namespace_mix::c::Item`

error[E0277]: the trait bound `c::Item: Impossible` is not satisfied
  --> $DIR/namespace-mix.rs:77:5
   |
LL | fn check<T: Impossible>(_: T) {}
   | ----------------------------- required by `check`
...
LL |     check(m5::US{});
   |     ^^^^^ the trait `Impossible` is not implemented for `c::Item`

error[E0277]: the trait bound `c::US: Impossible` is not satisfied
  --> $DIR/namespace-mix.rs:78:5
   |
LL | fn check<T: Impossible>(_: T) {}
   | ----------------------------- required by `check`
...
LL |     check(m5::US);
   |     ^^^^^ the trait `Impossible` is not implemented for `c::US`

error[E0277]: the trait bound `c::US: Impossible` is not satisfied
  --> $DIR/namespace-mix.rs:79:5
   |
LL | fn check<T: Impossible>(_: T) {}
   | ----------------------------- required by `check`
...
LL |     check(m6::US{});
   |     ^^^^^ the trait `Impossible` is not implemented for `c::US`

error[E0277]: the trait bound `c::Item: Impossible` is not satisfied
  --> $DIR/namespace-mix.rs:80:5
   |
LL | fn check<T: Impossible>(_: T) {}
   | ----------------------------- required by `check`
...
LL |     check(m6::US);
   |     ^^^^^ the trait `Impossible` is not implemented for `c::Item`

error[E0277]: the trait bound `namespace_mix::c::Item: Impossible` is not satisfied
  --> $DIR/namespace-mix.rs:83:5
   |
LL | fn check<T: Impossible>(_: T) {}
   | ----------------------------- required by `check`
...
LL |     check(xm5::US{});
   |     ^^^^^ the trait `Impossible` is not implemented for `namespace_mix::c::Item`

error[E0277]: the trait bound `namespace_mix::c::US: Impossible` is not satisfied
  --> $DIR/namespace-mix.rs:84:5
   |
LL | fn check<T: Impossible>(_: T) {}
   | ----------------------------- required by `check`
...
LL |     check(xm5::US);
   |     ^^^^^ the trait `Impossible` is not implemented for `namespace_mix::c::US`

error[E0277]: the trait bound `namespace_mix::c::US: Impossible` is not satisfied
  --> $DIR/namespace-mix.rs:85:5
   |
LL | fn check<T: Impossible>(_: T) {}
   | ----------------------------- required by `check`
...
LL |     check(xm6::US{});
   |     ^^^^^ the trait `Impossible` is not implemented for `namespace_mix::c::US`

error[E0277]: the trait bound `namespace_mix::c::Item: Impossible` is not satisfied
  --> $DIR/namespace-mix.rs:86:5
   |
LL | fn check<T: Impossible>(_: T) {}
   | ----------------------------- required by `check`
...
LL |     check(xm6::US);
   |     ^^^^^ the trait `Impossible` is not implemented for `namespace_mix::c::Item`

error[E0277]: the trait bound `c::Item: Impossible` is not satisfied
  --> $DIR/namespace-mix.rs:99:5
   |
LL | fn check<T: Impossible>(_: T) {}
   | ----------------------------- required by `check`
...
LL |     check(m7::V{});
   |     ^^^^^ the trait `Impossible` is not implemented for `c::Item`

error[E0277]: the trait bound `c::E: Impossible` is not satisfied
  --> $DIR/namespace-mix.rs:101:5
   |
LL | fn check<T: Impossible>(_: T) {}
   | ----------------------------- required by `check`
...
LL |     check(m8::V{});
   |     ^^^^^ the trait `Impossible` is not implemented for `c::E`

error[E0277]: the trait bound `c::Item: Impossible` is not satisfied
  --> $DIR/namespace-mix.rs:102:5
   |
LL | fn check<T: Impossible>(_: T) {}
   | ----------------------------- required by `check`
...
LL |     check(m8::V);
   |     ^^^^^ the trait `Impossible` is not implemented for `c::Item`

error[E0277]: the trait bound `namespace_mix::c::Item: Impossible` is not satisfied
  --> $DIR/namespace-mix.rs:105:5
   |
LL | fn check<T: Impossible>(_: T) {}
   | ----------------------------- required by `check`
...
LL |     check(xm7::V{});
   |     ^^^^^ the trait `Impossible` is not implemented for `namespace_mix::c::Item`

error[E0277]: the trait bound `namespace_mix::c::E: Impossible` is not satisfied
  --> $DIR/namespace-mix.rs:107:5
   |
LL | fn check<T: Impossible>(_: T) {}
   | ----------------------------- required by `check`
...
LL |     check(xm8::V{});
   |     ^^^^^ the trait `Impossible` is not implemented for `namespace_mix::c::E`

error[E0277]: the trait bound `namespace_mix::c::Item: Impossible` is not satisfied
  --> $DIR/namespace-mix.rs:108:5
   |
LL | fn check<T: Impossible>(_: T) {}
   | ----------------------------- required by `check`
...
LL |     check(xm8::V);
   |     ^^^^^ the trait `Impossible` is not implemented for `namespace_mix::c::Item`

error[E0277]: the trait bound `c::Item: Impossible` is not satisfied
  --> $DIR/namespace-mix.rs:121:5
   |
LL | fn check<T: Impossible>(_: T) {}
   | ----------------------------- required by `check`
...
LL |     check(m9::TV{});
   |     ^^^^^ the trait `Impossible` is not implemented for `c::Item`

error[E0277]: the trait bound `fn() -> c::E {c::E::TV}: Impossible` is not satisfied
  --> $DIR/namespace-mix.rs:122:5
   |
LL | fn check<T: Impossible>(_: T) {}
   | ----------------------------- required by `check`
...
LL |     check(m9::TV);
   |     ^^^^^ the trait `Impossible` is not implemented for `fn() -> c::E {c::E::TV}`

error[E0277]: the trait bound `c::E: Impossible` is not satisfied
  --> $DIR/namespace-mix.rs:123:5
   |
LL | fn check<T: Impossible>(_: T) {}
   | ----------------------------- required by `check`
...
LL |     check(mA::TV{});
   |     ^^^^^ the trait `Impossible` is not implemented for `c::E`

error[E0277]: the trait bound `c::Item: Impossible` is not satisfied
  --> $DIR/namespace-mix.rs:124:5
   |
LL | fn check<T: Impossible>(_: T) {}
   | ----------------------------- required by `check`
...
LL |     check(mA::TV);
   |     ^^^^^ the trait `Impossible` is not implemented for `c::Item`

error[E0277]: the trait bound `namespace_mix::c::Item: Impossible` is not satisfied
  --> $DIR/namespace-mix.rs:127:5
   |
LL | fn check<T: Impossible>(_: T) {}
   | ----------------------------- required by `check`
...
LL |     check(xm9::TV{});
   |     ^^^^^ the trait `Impossible` is not implemented for `namespace_mix::c::Item`

error[E0277]: the trait bound `fn() -> namespace_mix::c::E {namespace_mix::xm7::TV}: Impossible` is not satisfied
  --> $DIR/namespace-mix.rs:128:5
   |
LL | fn check<T: Impossible>(_: T) {}
   | ----------------------------- required by `check`
...
LL |     check(xm9::TV);
   |     ^^^^^ the trait `Impossible` is not implemented for `fn() -> namespace_mix::c::E {namespace_mix::xm7::TV}`

error[E0277]: the trait bound `namespace_mix::c::E: Impossible` is not satisfied
  --> $DIR/namespace-mix.rs:129:5
   |
LL | fn check<T: Impossible>(_: T) {}
   | ----------------------------- required by `check`
...
LL |     check(xmA::TV{});
   |     ^^^^^ the trait `Impossible` is not implemented for `namespace_mix::c::E`

error[E0277]: the trait bound `namespace_mix::c::Item: Impossible` is not satisfied
  --> $DIR/namespace-mix.rs:130:5
   |
LL | fn check<T: Impossible>(_: T) {}
   | ----------------------------- required by `check`
...
LL |     check(xmA::TV);
   |     ^^^^^ the trait `Impossible` is not implemented for `namespace_mix::c::Item`

error[E0277]: the trait bound `c::Item: Impossible` is not satisfied
  --> $DIR/namespace-mix.rs:143:5
   |
LL | fn check<T: Impossible>(_: T) {}
   | ----------------------------- required by `check`
...
LL |     check(mB::UV{});
   |     ^^^^^ the trait `Impossible` is not implemented for `c::Item`

error[E0277]: the trait bound `c::E: Impossible` is not satisfied
  --> $DIR/namespace-mix.rs:144:5
   |
LL | fn check<T: Impossible>(_: T) {}
   | ----------------------------- required by `check`
...
LL |     check(mB::UV);
   |     ^^^^^ the trait `Impossible` is not implemented for `c::E`

error[E0277]: the trait bound `c::E: Impossible` is not satisfied
  --> $DIR/namespace-mix.rs:145:5
   |
LL | fn check<T: Impossible>(_: T) {}
   | ----------------------------- required by `check`
...
LL |     check(mC::UV{});
   |     ^^^^^ the trait `Impossible` is not implemented for `c::E`

error[E0277]: the trait bound `c::Item: Impossible` is not satisfied
  --> $DIR/namespace-mix.rs:146:5
   |
LL | fn check<T: Impossible>(_: T) {}
   | ----------------------------- required by `check`
...
LL |     check(mC::UV);
   |     ^^^^^ the trait `Impossible` is not implemented for `c::Item`

error[E0277]: the trait bound `namespace_mix::c::Item: Impossible` is not satisfied
  --> $DIR/namespace-mix.rs:149:5
   |
LL | fn check<T: Impossible>(_: T) {}
   | ----------------------------- required by `check`
...
LL |     check(xmB::UV{});
   |     ^^^^^ the trait `Impossible` is not implemented for `namespace_mix::c::Item`

error[E0277]: the trait bound `namespace_mix::c::E: Impossible` is not satisfied
  --> $DIR/namespace-mix.rs:150:5
   |
LL | fn check<T: Impossible>(_: T) {}
   | ----------------------------- required by `check`
...
LL |     check(xmB::UV);
   |     ^^^^^ the trait `Impossible` is not implemented for `namespace_mix::c::E`

error[E0277]: the trait bound `namespace_mix::c::E: Impossible` is not satisfied
  --> $DIR/namespace-mix.rs:151:5
   |
LL | fn check<T: Impossible>(_: T) {}
   | ----------------------------- required by `check`
...
LL |     check(xmC::UV{});
   |     ^^^^^ the trait `Impossible` is not implemented for `namespace_mix::c::E`

error[E0277]: the trait bound `namespace_mix::c::Item: Impossible` is not satisfied
  --> $DIR/namespace-mix.rs:152:5
   |
LL | fn check<T: Impossible>(_: T) {}
   | ----------------------------- required by `check`
...
LL |     check(xmC::UV);
   |     ^^^^^ the trait `Impossible` is not implemented for `namespace_mix::c::Item`

error: aborting due to 48 previous errors

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