156 lines
3.2 KiB
Rust
156 lines
3.2 KiB
Rust
//@ 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() {}
|