Remove headers from ~@T and ~[@T] allocations #8035
Closed
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.
I don't believe that these are needed in cleanup after all. Because ~T has the same semantics in the compiler regardless of what T is, then there are two cases for the destruction of ~T. One is before the program exits (which is normal), the other is when the program exits during annihilation. It's possible for ~T to be located inside an @ cycle.
Even though there were headers on ~[@t], the value itself was ignored because each of the elements were linked together themselves. Whatever box contains the ~ allocation will have its destructor run when annihilation comes around, subsequently freeing the ~ allocation.
This builds just fine on OSX, and I'm having other unrelated valgrind issues on linux to ensure that there's no leaks, but I'm sure bors will complain at me if there are any.
By the way, thanks to @thestinger's awesome work removing headers previously, this was a super-easy change!