Skip to content

[pointer] Fix Ptr[Inner] variance (#2351)#2393

Merged
joshlf merged 1 commit intov0.8.xfrom
v0.8.x-2351
Feb 25, 2025
Merged

[pointer] Fix Ptr[Inner] variance (#2351)#2393
joshlf merged 1 commit intov0.8.xfrom
v0.8.x-2351

Conversation

@joshlf
Copy link
Member

@joshlf joshlf commented Feb 25, 2025

Previously, Ptr<'a, T> and PtrInner<'a, T> documented themselves to be covariant in both 'a and T. This was true for PtrInner, but not for Ptr, which used GATs, which are invariant. This is also not the desired variance: for Exclusive aliasing, the desired variance matches that of &mut references - namely, covariant in 'a but invariant in T.

This commit fixes this by making Ptr<'a, T> and PtrInner<'a, T> unconditionally covariant in 'a and invariant in T.

gherrit-pr-id: I29f8429d9d7b14026313f030f8dc1e895a98ad56

@joshlf joshlf requested a review from jswrenn February 25, 2025 18:22
@joshlf
Copy link
Member Author

joshlf commented Feb 25, 2025

Backporting #2351

Previously, `Ptr<'a, T>` and `PtrInner<'a, T>` documented themselves to
be covariant in both `'a` and `T`. This was true for `PtrInner`, but not
for `Ptr`, which used GATs, which are invariant. This is also not the
desired variance: for `Exclusive` aliasing, the desired variance matches
that of `&mut` references - namely, covariant in `'a` but invariant in
`T`.

This commit fixes this by making `Ptr<'a, T>` and `PtrInner<'a, T>`
unconditionally covariant in `'a` and invariant in `T`.

gherrit-pr-id: I29f8429d9d7b14026313f030f8dc1e895a98ad56
@joshlf joshlf added this pull request to the merge queue Feb 25, 2025
@codecov-commenter
Copy link

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 87.82%. Comparing base (47949a4) to head (399639b).

Additional details and impacted files
@@           Coverage Diff           @@
##           v0.8.x    #2393   +/-   ##
=======================================
  Coverage   87.82%   87.82%           
=======================================
  Files          17       17           
  Lines        6200     6200           
=======================================
  Hits         5445     5445           
  Misses        755      755           

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

auto-merge was automatically disabled February 25, 2025 18:59

Pull Request is not mergeable

Merged via the queue into v0.8.x with commit fe70ab6 Feb 25, 2025
87 checks passed
@joshlf joshlf deleted the v0.8.x-2351 branch February 25, 2025 19:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants