mirror of
				https://github.com/rust-lang/rust.git
				synced 2025-10-30 20:44:34 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			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() {}
 | 
