identity uses are ok, even if there are no defining uses #146206
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
fix #146191
I've tried moving the "is this an identity use" check to
fn clone_and_resolve_opaque_typesand this would allow the following code to compile as it now ignoresOpaque<'!a> = Opaque<'!a>while they previously resulted in errorsrust/tests/ui/type-alias-impl-trait/hkl_forbidden.rs
Lines 42 to 46 in 71289c3
The closure signature gets inferred to
for<'a> fn(&'a ()) -> Inner<'a>. The closure then has a defining useInner<'a_latbound> = &'a_latebound ()while the parent function has a non-definingInner<'!a> = Inner<'!a>. By eagerly discarding identity uses we don't error on the non-defining use in the parent.r? @BoxyUwU