mirror of
				https://github.com/rust-lang/rust.git
				synced 2025-11-04 06:56:14 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			65 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Rust
		
	
	
	
	
	
			
		
		
	
	
			65 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Rust
		
	
	
	
	
	
// aux-build:pub-and-stability.rs
 | 
						|
 | 
						|
// A big point of this test is that we *declare* `unstable_declared`,
 | 
						|
// but do *not* declare `unstable_undeclared`. This way we can check
 | 
						|
// that the compiler is letting in uses of declared feature-gated
 | 
						|
// stuff but still rejecting uses of undeclared feature-gated stuff.
 | 
						|
#![feature(unstable_declared)]
 | 
						|
 | 
						|
extern crate pub_and_stability;
 | 
						|
use pub_and_stability::{Record, Trait, Tuple};
 | 
						|
 | 
						|
fn main() {
 | 
						|
    // Okay
 | 
						|
    let Record { .. } = Record::new();
 | 
						|
 | 
						|
    // Okay
 | 
						|
    let Record { a_stable_pub: _, a_unstable_declared_pub: _, .. } = Record::new();
 | 
						|
 | 
						|
    let Record { a_stable_pub: _, a_unstable_declared_pub: _, a_unstable_undeclared_pub: _, .. } =
 | 
						|
        Record::new();
 | 
						|
    //~^^ ERROR use of unstable library feature 'unstable_undeclared'
 | 
						|
 | 
						|
    let r = Record::new();
 | 
						|
    let t = Tuple::new();
 | 
						|
 | 
						|
    r.a_stable_pub;
 | 
						|
    r.a_unstable_declared_pub;
 | 
						|
    r.a_unstable_undeclared_pub; //~ ERROR use of unstable library feature
 | 
						|
    r.b_crate;                   //~ ERROR is private
 | 
						|
    r.c_mod;                     //~ ERROR is private
 | 
						|
    r.d_priv;                    //~ ERROR is private
 | 
						|
 | 
						|
    t.0;
 | 
						|
    t.1;
 | 
						|
    t.2;                         //~ ERROR use of unstable library feature
 | 
						|
    t.3;                         //~ ERROR is private
 | 
						|
    t.4;                         //~ ERROR is private
 | 
						|
    t.5;                         //~ ERROR is private
 | 
						|
 | 
						|
    r.stable_trait_method();
 | 
						|
    r.unstable_declared_trait_method();
 | 
						|
    r.unstable_undeclared_trait_method(); //~ ERROR use of unstable library feature
 | 
						|
 | 
						|
    r.stable();
 | 
						|
    r.unstable_declared();
 | 
						|
    r.unstable_undeclared();              //~ ERROR use of unstable library feature
 | 
						|
 | 
						|
    r.pub_crate();                        //~ ERROR `pub_crate` is private
 | 
						|
    r.pub_mod();                          //~ ERROR `pub_mod` is private
 | 
						|
    r.private();                          //~ ERROR `private` is private
 | 
						|
 | 
						|
    let t = Tuple::new();
 | 
						|
    t.stable_trait_method();
 | 
						|
    t.unstable_declared_trait_method();
 | 
						|
    t.unstable_undeclared_trait_method(); //~ ERROR use of unstable library feature
 | 
						|
 | 
						|
    t.stable();
 | 
						|
    t.unstable_declared();
 | 
						|
    t.unstable_undeclared();              //~ ERROR use of unstable library feature
 | 
						|
 | 
						|
    t.pub_crate();                        //~ ERROR `pub_crate` is private
 | 
						|
    t.pub_mod();                          //~ ERROR `pub_mod` is private
 | 
						|
    t.private();                          //~ ERROR `private` is private
 | 
						|
}
 |