// 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` pending #48214 trait Foo: Bar { } trait Bar { } // We don't always check where clauses for sanity, but in this case // wfcheck does report an error here: fn vacuous() where i32: Foo //~ ERROR the trait bound `i32: Bar` 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::(); } fn require() where A: Bar { } fn main() { require::(); //~^ ERROR `i32: Bar` is not satisfied }