mirror of
				https://github.com/rust-lang/rust.git
				synced 2025-11-03 22:49:17 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			44 lines
		
	
	
		
			841 B
		
	
	
	
		
			Rust
		
	
	
	
	
	
			
		
		
	
	
			44 lines
		
	
	
		
			841 B
		
	
	
	
		
			Rust
		
	
	
	
	
	
// check-pass
 | 
						|
// compile-flags: --emit=mir,link
 | 
						|
// Regression test for issue #68264
 | 
						|
// Checks that we don't encounter overflow
 | 
						|
// when running const-prop on functions with
 | 
						|
// complicated bounds
 | 
						|
pub trait Query {}
 | 
						|
 | 
						|
pub trait AsQuery {
 | 
						|
    type Query: Query;
 | 
						|
}
 | 
						|
pub trait Table: AsQuery + Sized {}
 | 
						|
 | 
						|
pub trait LimitDsl {
 | 
						|
    type Output;
 | 
						|
}
 | 
						|
 | 
						|
pub(crate) trait LoadQuery<Conn, U>: RunQueryDsl<Conn> {}
 | 
						|
 | 
						|
impl<T: Query> AsQuery for T {
 | 
						|
    type Query = Self;
 | 
						|
}
 | 
						|
 | 
						|
impl<T> LimitDsl for T
 | 
						|
where
 | 
						|
    T: Table,
 | 
						|
    T::Query: LimitDsl,
 | 
						|
{
 | 
						|
    type Output = <T::Query as LimitDsl>::Output;
 | 
						|
}
 | 
						|
 | 
						|
pub(crate) trait RunQueryDsl<Conn>: Sized {
 | 
						|
    fn first<U>(self, _conn: &Conn) -> U
 | 
						|
    where
 | 
						|
        Self: LimitDsl,
 | 
						|
        Self::Output: LoadQuery<Conn, U>,
 | 
						|
    {
 | 
						|
        // Overflow is caused by this function body
 | 
						|
        unimplemented!()
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
fn main() {}
 |