| //~ 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() {} |