mirror of
				https://github.com/rust-lang/rust.git
				synced 2025-11-04 06:56:14 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			33 lines
		
	
	
		
			745 B
		
	
	
	
		
			Rust
		
	
	
	
	
	
			
		
		
	
	
			33 lines
		
	
	
		
			745 B
		
	
	
	
		
			Rust
		
	
	
	
	
	
// Ensure that we don't get a cycle error from trying to determine whether an
 | 
						|
// opaque type implements `Freeze` in safety checking, when it doesn't matter.
 | 
						|
 | 
						|
//@ check-pass
 | 
						|
 | 
						|
#![feature(rustc_attrs)]
 | 
						|
 | 
						|
struct AnyValue<T>(T);
 | 
						|
 | 
						|
// No need to check for `Freeze` here, there's no
 | 
						|
// `rustc_layout_scalar_valid_range_start` involved.
 | 
						|
fn not_restricted(c: bool) -> impl Sized {
 | 
						|
    if c {
 | 
						|
        let x = AnyValue(not_restricted(false));
 | 
						|
        &x.0;
 | 
						|
    }
 | 
						|
    2u32
 | 
						|
}
 | 
						|
 | 
						|
#[rustc_layout_scalar_valid_range_start(1)]
 | 
						|
struct NonZero<T>(T);
 | 
						|
 | 
						|
// No need to check for `Freeze` here, we're not borrowing the field.
 | 
						|
fn not_field(c: bool) -> impl Sized {
 | 
						|
    if c {
 | 
						|
        let x = unsafe { NonZero(not_field(false)) };
 | 
						|
        &x;
 | 
						|
    }
 | 
						|
    5u32
 | 
						|
}
 | 
						|
 | 
						|
fn main() {}
 |