//@ check-pass //@ compile-flags: -Znext-solver // Minimized example from `rustc_type_ir` that demonstrates a missing deep normalization // in the new solver when computing the implies outlives bounds of an impl. use std::marker::PhantomData; use std::ops::Deref; pub struct SearchGraph::Cx> { d: PhantomData, x: PhantomData, } pub trait Delegate { type Cx; } struct SearchGraphDelegate { _marker: PhantomData, } impl Delegate for SearchGraphDelegate where D: SolverDelegate, { type Cx = D::Interner; } pub trait SolverDelegate { type Interner; } struct EvalCtxt<'a, D, I> where D: SolverDelegate, { search_graph: &'a SearchGraph>, } impl<'a, D, I> EvalCtxt<'a, D, ::Interner> where D: SolverDelegate {} fn main() {}