// Check that when there are vacuous predicates in the environment
// (which make a fn uncallable) we don't erroneously cache those and
// then consider them satisfied elsewhere. The current technique for
// doing this is to not use global caches when there is a chance that
// the environment contains such a predicate.
// We still error for `i32: Bar<u32>` pending #48214

trait Foo<X,Y>: Bar<X> {
}

trait Bar<X> { }

// We don't always check where clauses for sanity, but in this case
// wfcheck does report an error here:
fn vacuous<A>()
    where i32: Foo<u32, A> //~ ERROR the trait bound `i32: Bar<u32>` is not satisfied
{
    // ... the original intention was to check that we don't use that
    // vacuous where clause (which could never be satisfied) to accept
    // the following line and then mess up calls elsewhere.
    require::<i32, u32>();
}

fn require<A,B>()
    where A: Bar<B>
{
}

fn main() {
    require::<i32, u32>();
    //~^ ERROR `i32: Bar<u32>` is not satisfied
}
