mirror of
				https://github.com/rust-lang/rust.git
				synced 2025-11-04 06:56:14 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			72 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Rust
		
	
	
	
	
	
			
		
		
	
	
			72 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Rust
		
	
	
	
	
	
mod m {
 | 
						|
    pub enum E {
 | 
						|
        Fn(u8),
 | 
						|
        Struct {
 | 
						|
            s: u8,
 | 
						|
        },
 | 
						|
        Unit,
 | 
						|
    }
 | 
						|
 | 
						|
    pub mod n {
 | 
						|
        pub(in m) enum Z {
 | 
						|
            Fn(u8),
 | 
						|
            Struct {
 | 
						|
                s: u8,
 | 
						|
            },
 | 
						|
            Unit,
 | 
						|
        }
 | 
						|
    }
 | 
						|
 | 
						|
    use m::n::Z; // OK, only the type is imported
 | 
						|
 | 
						|
    fn f() {
 | 
						|
        n::Z;
 | 
						|
        //~^ ERROR expected value, found enum `n::Z`
 | 
						|
        Z;
 | 
						|
        //~^ ERROR expected value, found enum `Z`
 | 
						|
        let _: Z = Z::Fn;
 | 
						|
        //~^ ERROR mismatched types
 | 
						|
        let _: Z = Z::Struct;
 | 
						|
        //~^ ERROR expected value, found struct variant `Z::Struct`
 | 
						|
        let _ = Z::Unit();
 | 
						|
        //~^ ERROR expected function, found enum variant `Z::Unit`
 | 
						|
        let _ = Z::Unit {};
 | 
						|
        // This is ok, it is equivalent to not having braces
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
use m::E; // OK, only the type is imported
 | 
						|
 | 
						|
fn main() {
 | 
						|
    let _: E = m::E;
 | 
						|
    //~^ ERROR expected value, found enum `m::E`
 | 
						|
    let _: E = m::E::Fn;
 | 
						|
    //~^ ERROR mismatched types
 | 
						|
    let _: E = m::E::Struct;
 | 
						|
    //~^ ERROR expected value, found struct variant `m::E::Struct`
 | 
						|
    let _: E = m::E::Unit();
 | 
						|
    //~^ ERROR expected function, found enum variant `m::E::Unit`
 | 
						|
    let _: E = E;
 | 
						|
    //~^ ERROR expected value, found enum `E`
 | 
						|
    let _: E = E::Fn;
 | 
						|
    //~^ ERROR mismatched types
 | 
						|
    let _: E = E::Struct;
 | 
						|
    //~^ ERROR expected value, found struct variant `E::Struct`
 | 
						|
    let _: E = E::Unit();
 | 
						|
    //~^ ERROR expected function, found enum variant `E::Unit`
 | 
						|
    let _: Z = m::n::Z;
 | 
						|
    //~^ ERROR cannot find type `Z` in this scope
 | 
						|
    //~| ERROR expected value, found enum `m::n::Z`
 | 
						|
    //~| ERROR enum `Z` is private
 | 
						|
    let _: Z = m::n::Z::Fn;
 | 
						|
    //~^ ERROR cannot find type `Z` in this scope
 | 
						|
    //~| ERROR enum `Z` is private
 | 
						|
    let _: Z = m::n::Z::Struct;
 | 
						|
    //~^ ERROR cannot find type `Z` in this scope
 | 
						|
    //~| ERROR expected value, found struct variant `m::n::Z::Struct`
 | 
						|
    //~| ERROR enum `Z` is private
 | 
						|
    let _: Z = m::n::Z::Unit {};
 | 
						|
    //~^ ERROR cannot find type `Z` in this scope
 | 
						|
    //~| ERROR enum `Z` is private
 | 
						|
}
 |