Add support for tagless types in binary writer through standard API #992
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.
Issue #, if available: n/a
Description of changes:
This PR extends the binary writer API by adding a
BinaryEExpParameterValueWriter_1_1
which becomes theValueWriter
implementation returned by theBinaryEExpWriter_1_1
. The implementation wires upuint8
encoding, and continues supporting tagged encodings for all of the existing types that will ultimately support taggless encodings.This extends the writer API to provide seamless handling of tagless encoding for code like:
To generate the expected:
When trying to write a value greater than 255, we get an IonError:
With this change, type checking and parameter cardinality is checked in a way that broke a couple unit tests. Originally two unit tests existed that wrote invocations for
(:none foo bar baz)
, and(:make_string foo bar baz)
. The first unit test no longer works due tonone
not taking arguments. The second unit test fails because the eexp invocation requires building an expression group which currently is not implemented for binary ion. These issues now get caught, rather than writing the equivalent of(:none) foo bar baz
. Once the binary e-group writer is implemented and wired up, we can shoot for matching the previous unit tests' desired API.By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.