Better support for complex inheritance #229
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.
The current implementation had several issues:
A
->B
->C
,C
will besealed
,A
andB
will bedata
. This is incorrect,B
should beopen
.B
andC
should be open: descendants can override them3.1. It's a leaf (like
A
), then it should bedata object
, not just object3.2. It's a node (like
B
), then it should beopen class
This commit addresses all these cases.
There is still one important issue I don't immediately know how to fix: all descendants should have an
override
modifier on fields, overriding fields in the whole tree.