mirror of
https://github.com/rust-lang/rust.git
synced 2026-02-15 02:24:21 +00:00
identity uses are ok, even if there are no defining uses
fix rust-lang/rust#146191
I've tried moving the "is this an identity use" check to `fn clone_and_resolve_opaque_types` and this would allow the following code to compile as it now ignores `Opaque<'!a> = Opaque<'!a>` while they previously resulted in errors 71289c378d/tests/ui/type-alias-impl-trait/hkl_forbidden.rs (L42-L46)
The closure signature gets inferred to `for<'a> fn(&'a ()) -> Inner<'a>`. The closure then has a defining use `Inner<'a_latbound> = &'a_latebound ()` while the parent function has a non-defining `Inner<'!a> = Inner<'!a>`. By eagerly discarding identity uses we don't error on the non-defining use in the parent.
r? `@BoxyUwU`