This repository has been archived by the owner on Aug 15, 2021. It is now read-only.
Fix encoding of packed variants in new enum format #215
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.
Fixes #187
Legacy enum format supported packed encoding pretty well but with the
switch to new enum format there was a regression (#173).
This commit fixes the new enum format in packed encoding.
For example consider the following structure:
Legacy enum packed encodings are:
Non-legacy enum packed encodings before this commit:
Notice how NewType and Tuple store the name instead of variant number.
Fixed after this commit:
After this commit the packed encoding can be briefly described as:
All struct fields and enum variants are encoded as their field number
rather than name.
This applies to all types of members (unit, newtype, tuple and struct).