mirror of
				https://github.com/rust-lang/rust.git
				synced 2025-11-03 22:49:17 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			72 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Rust
		
	
	
	
	
	
			
		
		
	
	
			72 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Rust
		
	
	
	
	
	
// compile-flags:-Zprint-mono-items=eager -Zinline-mir=no
 | 
						|
 | 
						|
#![deny(dead_code)]
 | 
						|
#![feature(start)]
 | 
						|
 | 
						|
struct Struct<T> {
 | 
						|
    x: T,
 | 
						|
    f: fn(x: T) -> T,
 | 
						|
}
 | 
						|
 | 
						|
fn id<T>(x: T) -> T { x }
 | 
						|
 | 
						|
impl<T> Struct<T> {
 | 
						|
 | 
						|
    fn new(x: T) -> Struct<T> {
 | 
						|
        Struct {
 | 
						|
            x: x,
 | 
						|
            f: id
 | 
						|
        }
 | 
						|
    }
 | 
						|
 | 
						|
    fn get<T2>(self, x: T2) -> (T, T2) {
 | 
						|
        (self.x, x)
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
pub struct LifeTimeOnly<'a> {
 | 
						|
    _a: &'a u32
 | 
						|
}
 | 
						|
 | 
						|
impl<'a> LifeTimeOnly<'a> {
 | 
						|
 | 
						|
    //~ MONO_ITEM fn LifeTimeOnly::<'_>::foo
 | 
						|
    pub fn foo(&self) {}
 | 
						|
    //~ MONO_ITEM fn LifeTimeOnly::<'_>::bar
 | 
						|
    pub fn bar(&'a self) {}
 | 
						|
    //~ MONO_ITEM fn LifeTimeOnly::<'_>::baz
 | 
						|
    pub fn baz<'b>(&'b self) {}
 | 
						|
 | 
						|
    pub fn non_instantiated<T>(&self) {}
 | 
						|
}
 | 
						|
 | 
						|
//~ MONO_ITEM fn start
 | 
						|
#[start]
 | 
						|
fn start(_: isize, _: *const *const u8) -> isize {
 | 
						|
    //~ MONO_ITEM fn Struct::<i32>::new
 | 
						|
    //~ MONO_ITEM fn id::<i32>
 | 
						|
    //~ MONO_ITEM fn Struct::<i32>::get::<i16>
 | 
						|
    let _ = Struct::new(0i32).get(0i16);
 | 
						|
 | 
						|
    //~ MONO_ITEM fn Struct::<i64>::new
 | 
						|
    //~ MONO_ITEM fn id::<i64>
 | 
						|
    //~ MONO_ITEM fn Struct::<i64>::get::<i16>
 | 
						|
    let _ = Struct::new(0i64).get(0i16);
 | 
						|
 | 
						|
    //~ MONO_ITEM fn Struct::<char>::new
 | 
						|
    //~ MONO_ITEM fn id::<char>
 | 
						|
    //~ MONO_ITEM fn Struct::<char>::get::<i16>
 | 
						|
    let _ = Struct::new('c').get(0i16);
 | 
						|
 | 
						|
    //~ MONO_ITEM fn Struct::<&str>::new
 | 
						|
    //~ MONO_ITEM fn id::<&str>
 | 
						|
    //~ MONO_ITEM fn Struct::<Struct<&str>>::get::<i16>
 | 
						|
    let _ = Struct::new(Struct::new("str")).get(0i16);
 | 
						|
 | 
						|
    //~ MONO_ITEM fn Struct::<Struct<&str>>::new
 | 
						|
    //~ MONO_ITEM fn id::<Struct<&str>>
 | 
						|
    let _ = (Struct::new(Struct::new("str")).f)(Struct::new("str"));
 | 
						|
 | 
						|
    0
 | 
						|
}
 |