// compile-flags: -Ztrait-solver=next // check-pass // This tests checks that we update results in the provisional cache when // we pop a goal from the stack. #![feature(auto_traits)] auto trait Coinductive {} struct Foo(T); struct Bar(T); impl Coinductive for Foo where Bar: Coinductive {} impl Coinductive for Bar where Foo: Coinductive, Bar: ConstrainInfer, {} trait ConstrainInfer {} impl ConstrainInfer for Bar {} impl ConstrainInfer for Foo {} fn impls() -> T { todo!() } fn constrain(_: T) {} fn main() { // This should constrain `_` to `u8`. impls::>(); }