Allow subclass!()
of superclasses with protected destructors
#1481
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.
See individual commit messages for details. There were two blockers here:
as_<superclass>_unique_ptr
functions failed to compile on the C++ side becauseunique_ptr
needs to point to a destructible type. I fixed that by just omitting those functions when the superclass is not destructible.CppPeerConstructor
implementation, were erroneously omitted forprotected
superclass destructors rather than only forprivate
ones.I'm not sure if my approach here, especially on commits 2 and 3, is ideal. I added a new analysis field for
Api::Subclass
, which resulted in a ton of new boilerplate. The new code's clean, but there's a lot of it. If you can think of a way to plumb the information through in a less invasive way, I'd be happy to do that instead.