//@ revisions: current next //@[next] compile-flags: -Znext-solver //@ ignore-compare-mode-next-solver (explicit revisions) // When emitting an error for `Foo: Trait` not holding we attempt to find a nested goal // to give as the reason why the bound does not hold. This test checks that we do not // try to tell the user that `Foo: FnPtr` is unimplemented as that would be confusing. #![feature(fn_ptr_trait)] use std::marker::FnPtr; trait Trait {} impl Trait for T {} struct Foo; fn requires_trait(_: T) {} //~^ NOTE: required by a bound in `requires_trait` //~| NOTE: required by this bound in `requires_trait` fn main() { requires_trait(Foo); //~^ ERROR: the trait bound `Foo: Trait` is not satisfied //~| NOTE: the trait `Trait` is not implemented for `Foo` //~| NOTE: required by a bound introduced by this call }