| //@ aux-build:namespace-mix.rs |
| |
| extern crate namespace_mix; |
| use namespace_mix::*; |
| |
| mod c { |
| pub struct S {} |
| pub struct TS(); |
| pub struct US; |
| pub enum E { |
| V {}, |
| TV(), |
| UV, |
| } |
| |
| pub struct Item; |
| } |
| |
| // Use something emitting the type argument name, e.g., unsatisfied bound. |
| trait Impossible {} |
| fn check<T: Impossible>(_: T) {} |
| |
| mod m1 { |
| pub use ::c::*; |
| pub type S = ::c::Item; |
| } |
| mod m2 { |
| pub use ::c::*; |
| pub const S: ::c::Item = ::c::Item; |
| } |
| |
| fn f12() { |
| check(m1::S{}); //~ ERROR c::Item |
| check(m1::S); //~ ERROR expected value, found type alias `m1::S` |
| check(m2::S{}); //~ ERROR c::S |
| check(m2::S); //~ ERROR c::Item |
| } |
| fn xf12() { |
| check(xm1::S{}); //~ ERROR c::Item |
| check(xm1::S); //~ ERROR expected value, found type alias `xm1::S` |
| check(xm2::S{}); //~ ERROR c::S |
| check(xm2::S); //~ ERROR c::Item |
| } |
| |
| mod m3 { |
| pub use ::c::*; |
| pub type TS = ::c::Item; |
| } |
| mod m4 { |
| pub use ::c::*; |
| pub const TS: ::c::Item = ::c::Item; |
| } |
| |
| fn f34() { |
| check(m3::TS{}); //~ ERROR c::Item |
| check(m3::TS); //~ ERROR c::TS |
| check(m4::TS{}); //~ ERROR c::TS |
| check(m4::TS); //~ ERROR c::Item |
| } |
| fn xf34() { |
| check(xm3::TS{}); //~ ERROR c::Item |
| check(xm3::TS); //~ ERROR c::TS |
| check(xm4::TS{}); //~ ERROR c::TS |
| check(xm4::TS); //~ ERROR c::Item |
| } |
| |
| mod m5 { |
| pub use ::c::*; |
| pub type US = ::c::Item; |
| } |
| mod m6 { |
| pub use ::c::*; |
| pub const US: ::c::Item = ::c::Item; |
| } |
| |
| fn f56() { |
| check(m5::US{}); //~ ERROR c::Item |
| check(m5::US); //~ ERROR c::US |
| check(m6::US{}); //~ ERROR c::US |
| check(m6::US); //~ ERROR c::Item |
| } |
| fn xf56() { |
| check(xm5::US{}); //~ ERROR c::Item |
| check(xm5::US); //~ ERROR c::US |
| check(xm6::US{}); //~ ERROR c::US |
| check(xm6::US); //~ ERROR c::Item |
| } |
| |
| mod m7 { |
| pub use ::c::E::*; |
| pub type V = ::c::Item; |
| } |
| mod m8 { |
| pub use ::c::E::*; |
| pub const V: ::c::Item = ::c::Item; |
| } |
| |
| fn f78() { |
| check(m7::V{}); //~ ERROR c::Item |
| check(m7::V); //~ ERROR expected value, found type alias `m7::V` |
| check(m8::V{}); //~ ERROR c::E |
| check(m8::V); //~ ERROR c::Item |
| } |
| fn xf78() { |
| check(xm7::V{}); //~ ERROR c::Item |
| check(xm7::V); //~ ERROR expected value, found type alias `xm7::V` |
| check(xm8::V{}); //~ ERROR c::E |
| check(xm8::V); //~ ERROR c::Item |
| } |
| |
| mod m9 { |
| pub use ::c::E::*; |
| pub type TV = ::c::Item; |
| } |
| mod mA { |
| pub use ::c::E::*; |
| pub const TV: ::c::Item = ::c::Item; |
| } |
| |
| fn f9A() { |
| check(m9::TV{}); //~ ERROR c::Item |
| check(m9::TV); //~ ERROR c::E |
| check(mA::TV{}); //~ ERROR c::E |
| check(mA::TV); //~ ERROR c::Item |
| } |
| fn xf9A() { |
| check(xm9::TV{}); //~ ERROR c::Item |
| check(xm9::TV); //~ ERROR c::E |
| check(xmA::TV{}); //~ ERROR c::E |
| check(xmA::TV); //~ ERROR c::Item |
| } |
| |
| mod mB { |
| pub use ::c::E::*; |
| pub type UV = ::c::Item; |
| } |
| mod mC { |
| pub use ::c::E::*; |
| pub const UV: ::c::Item = ::c::Item; |
| } |
| |
| fn fBC() { |
| check(mB::UV{}); //~ ERROR c::Item |
| check(mB::UV); //~ ERROR c::E |
| check(mC::UV{}); //~ ERROR c::E |
| check(mC::UV); //~ ERROR c::Item |
| } |
| fn xfBC() { |
| check(xmB::UV{}); //~ ERROR c::Item |
| check(xmB::UV); //~ ERROR c::E |
| check(xmC::UV{}); //~ ERROR c::E |
| check(xmC::UV); //~ ERROR c::Item |
| } |
| |
| fn main() {} |