mirror of
https://github.com/rust-lang/rust.git
synced 2024-10-30 14:01:51 +00:00
44 lines
843 B
Rust
44 lines
843 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() {}
|