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.
Previous RecordParser would successfully parse
INNER_NESTING_LEVEL 1
{ "key": { "key2": 1 } }
But fail on
INNER_NESTING_LEVEL 1
{ "key": { "key2": 1 }, "key3": { "key4": 1 } }
Completely skipping "key3" and anything beyond that.
The issue was that STATE_VALUE would check whether it was still nested:
(high downto 1) of the nesting register was 0
Then switch to STATE_IDLE as soon as it received a '}'.
In effect:
This PR adds a number of tests against this behavior, and fixes the STATE_VALUE transition by also checking whether it is still inside the outer record (nesting reg: 01, otherwise 00).
It's possible nested arrays will produce the same issue in ArrayParser, but I haven't verified that yet.