35 lines
711 B
Rust
35 lines
711 B
Rust
|
//~ ERROR overflow
|
||
|
// A regression test for #111729 checking that we correctly
|
||
|
// track recursion depth for obligations returned by confirmation.
|
||
|
use std::panic::RefUnwindSafe;
|
||
|
|
||
|
trait Database {
|
||
|
type Storage;
|
||
|
}
|
||
|
trait Query<DB> {
|
||
|
type Data;
|
||
|
}
|
||
|
struct ParseQuery;
|
||
|
struct RootDatabase {
|
||
|
_runtime: Runtime<RootDatabase>,
|
||
|
}
|
||
|
|
||
|
impl<T: RefUnwindSafe> Database for T {
|
||
|
type Storage = SalsaStorage;
|
||
|
}
|
||
|
impl Database for RootDatabase {
|
||
|
type Storage = SalsaStorage;
|
||
|
}
|
||
|
|
||
|
struct Runtime<DB: Database> {
|
||
|
_storage: Box<DB::Storage>,
|
||
|
}
|
||
|
struct SalsaStorage {
|
||
|
_parse: <ParseQuery as Query<RootDatabase>>::Data,
|
||
|
}
|
||
|
|
||
|
impl<DB: Database> Query<DB> for ParseQuery {
|
||
|
type Data = RootDatabase;
|
||
|
}
|
||
|
fn main() {}
|