Faulty parser: better faulty literal (byte) arrays #13300
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.
RBArrayErrorNode
(andRBByteArrayErrorNode
) were created to handle (byte) arrays with missing closer (or opener).Therefore, on
#[ 0 foo 2 ]
where the error is not on the brackets, but on the contents, an additional and wrong error message was produced ("] expected").Producing a valid
RBLiteralArrayNode
with bad contents did not work because clients (many known ones and possible unknown ones) assumed thatRBLiteralArrayNode
always have a legal literal value.Various alternative solution were tried, but not with more success.
The proposed solution is to still have a
RBArrayErrorNode
(orRBByteArrayErrorNode
) but without an error notice attached.While possibly unintuitive, it allows an error node to not have specific error information by itself, but to contain nodes that have.