Make test suite pass under Tree Borrows #179
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.
Tree Borrows is a proposed replacement for Stacked Borrows, which is more permissive in general, but introduces new UB in edge cases. This commit fixes one such edge case.
Summary of the PR
Tree Borrows is a proposed replacement for Stacked Borrows, or at least an alternative aliasing model. It tries to fix some of Stacked Borrows shortcomings, and is in general more relaxed. There are however some areas where it has more UB than Stacked Borrows, and this crate seems to exhibit one of these examples. The fix is very small, and the problem arose because the code unnecessarily created a reference where none should have been created.
I did however not read the entire code to find if this is the only place this pattern occurs in; though it is the only place within the test suite, apparently.
Checking for compatibility with Tree Borrows requires setting
MIRIFLAGS="-Zmiri-tree-borrows"
as an environment variable. Be aware that this is currently quite slow, we're working on making it faster.Requirements
Most of these don't apply, but I hope the commit message/text is satisfactory.
git commit -s
), and the commit message has max 60 characters for thesummary and max 75 characters for each description line.
test.
Release" section of CHANGELOG.md (if no such section exists, please create one).
unsafe
code is properly documented.