blob: 4dd170c60113e946e27912a051eb8c19c4e16b71 [file] [log] [blame]
//@ compile-flags: -Znext-solver
// The `cause` in `Obligation` is ignored by type folders. So infer vars in cause code is not
// fudged.
// Check the comments of
// `leaking-vars-in-cause-code-1.rs` for more details.
trait Trait<T> {}
struct A<T>(T);
struct B<T>(T);
trait IncompleteGuidance {}
impl<T> Trait<()> for A<T>
where
T: IncompleteGuidance,
{
}
impl<T, U> Trait<()> for B<T>
//~^ ERROR: the type parameter `U` is not constrained by the impl trait, self type, or predicates
where
A<T>: Trait<U>,
{
}
fn impls_trait<T: Trait<()>>() {}
fn main() {
impls_trait::<B<()>>();
//~^ ERROR: the trait bound `(): IncompleteGuidance` is not satisfied
}