[TypeScript] Implement labeled tuple members #3837
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.
E.g.
type Rational = [numerator: bigint, denominator: bigint];
Introduced in TypeScript 4.0 more than three years ago, but documented nowhere outside those release notes (plus the recent 5.2 release notes).
I used the scope
meta.mapping.key
for the labels, which doesn't seem quite right but I don't know what would be more right.The implementation uses branching because a lookahead would have to span multiple lines. I initially intended to use a cover grammar approach, but that would be a mess if the label were the name of a type operator (which you would think wouldn't be allowed, but here we are).