Implement optional chaining deletion #492
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.
Progress toward #461
Tech plan: https://github.com/alangpierce/sucrase/wiki/Sucrase-Optional-Chaining-and-Nullish-Coalescing-Technical-Plan
This ended up being a relatively small tweak to the optional chaining
implementation:
a way for helpers to depend on each other.
whether there's a delete token just before the start of the optional chain.
a delete operation), we can walk the tokens forward tracking depth until we
get to either another subscript or the end of the chain. This means there was
no need for any changes to the parser. Since it only walks between two
adjacent subscripts, it takes linear extra time unless there's nesting, and only
ever does the more expensive operation when processing an optional delete.