//@ revisions: current next //@[current] check-pass //@[next] compile-flags: -Znext-solver //@[next] check-fail //@ ignore-compare-mode-next-solver (explicit revisions) /// This triggers an ICE with (and without) `--emit metadata` using the old /// trait solver: /// ``` /// rustc +nightly-2023-01-09 \ /// tests/ui/higher-ranked/trait-bounds/rigid-equate-projections-in-higher-ranked-fn-signature.rs /// ``` /// The ICE was unknowingly fixed by /// in `nightly-2023-01-10`. /// This is a regression test for that fixed ICE. For the next solver we simply /// make sure there is a compiler error. trait Trait<'a> { type Assoc; } fn foo Trait<'a>>() -> for<'a> fn(>::Assoc) { todo!() } fn bar Trait<'a>>() { let _: for<'a> fn(<_ as Trait<'a>>::Assoc) = foo::(); //[next]~ ERROR type annotations needed } fn main() {}