Change:
<!-- [31mICE[0m: Rustc '--edition=2021 -ooutputfile -Zdump-mir-dir=dir' 'error: internal compiler error: unexpected region kind in opaque type: RePlaceholder(!2BoundRegion { var: 0, kind: BrNamed(DefId(0:12 ~ 9DABD1FCA6B4214B1AFB7E3E0DCCB52B1F226FCDBDC62026B721AA5FB17BF76D[c411]::call::'any), 'any) })', 'error: internal compiler error: unexpected region kind in opaque type: RePlaceholder(!2BoundRegion { var: 0, kind: BrNamed(DefId(0:12 ~ 9DABD1FCA6B4214B1AFB7E3E0DCCB52B1F226FCDBDC62026B721AA5FB17BF76D[c411]::call::'any), 'any) })' File: --auto-reduced (treereduce-rust): original: Version information ` Command: <!-- Include a backtrace in the code block by setting in your environment. E.g. . --<details<summary<strongProgram output</strong</summary<p</p</details<!-- query stack: [mirborrowck] borrow-checking [mirborrowck] borrow-checking [typeofopaque] computing type of opaque [typeof] computing type of [checkwellformed] checking that is well-formed [checkmodtypewf] checking that types are well-formed in top-level module [analysis] running analysis passes on this crate --
cc could be related to
yea I have just locally started hitting this in tests/ui/impl-trait/impl-fn-predefined- while rebasing

Discussion:
.find(|ur_vid| self.eval_equal(vid, **ur_vid)) .and_then(|ur_vid| self.definitions[*ur_vid].external_name) .unwrap_or(infcx.tcx.lifetimes.re_erased), <ins> ty::RePlaceholder(_) => ty::Region::new_error_with_message( infcx.tcx, concrete_type.span, "hidden type contains placeholders, we don't support higher kinded opaques yet", ), </ins> _ => region, }); debug!(?universal_concrete_type);

<ins> //! This test used to ICE because, while an error was emitted, //! we still tried to remap generic params used in the hidden type //! to the ones of the opaque type definition. //@ edition: 2021 #![feature(type_alias_impl_trait)] use std::future::Future; type FutNothing<'a> = impl 'a + Future<Output = ()>; //~^ ERROR: unconstrained opaque type async fn operation(_: &mut ()) -> () { //~^ ERROR: concrete type differs from previous call(operation).await } async fn call<F>(_f: F) where for<'any> F: FnMut(&'any mut ()) -> FutNothing<'any>, { //~^ ERROR: expected generic lifetime parameter, found `'any` } fn main() {} </ins>

<ins> error: unconstrained opaque type --> $DIR/hkl_forbidden4.rs:10:23 | LL | type FutNothing<'a> = impl 'a + Future<Output = ()>; |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | = note: `FutNothing` must be used in combination with a concrete type within the same module error: concrete type differs from previous defining opaque type use --> $DIR/hkl_forbidden4.rs:13:1 | LL | async fn operation(_: &mut ()) -> () { | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected `FutNothing<'_>`, got `{async fn body@$DIR/hkl_forbidden4.rs:13:38: 16:2}` | note: previous use here --> $DIR/hkl_forbidden4.rs:15:5 | LL |     call(operation).await |     ^^^^^^^^^^^^^^^ error[E0792]: expected generic lifetime parameter, found `'any` --> $DIR/hkl_forbidden4.rs:21:1 | LL |   type FutNothing<'a> = impl 'a + Future<Output = ()>; |                   -- this generic parameter must be used with a generic lifetime parameter ... LL | / { LL | | LL | | } | |_^ error: aborting due to 3 previous errors For more information about this error, try `rustc --explain E0792`. </ins>