Legacy byte-range subscript index parser — kept for callers that pre-scan.
( P: ParseState, startB: number, endB: number, )
| 1560 | |
| 1561 | /** Legacy byte-range subscript index parser — kept for callers that pre-scan. */ |
| 1562 | function parseSubscriptIndex( |
| 1563 | P: ParseState, |
| 1564 | startB: number, |
| 1565 | endB: number, |
| 1566 | ): TsNode { |
| 1567 | const text = sliceBytes(P, startB, endB) |
| 1568 | if (/^\d+$/.test(text)) return mk(P, 'number', startB, endB, []) |
| 1569 | const m = /^\$([a-zA-Z_]\w*)$/.exec(text) |
| 1570 | if (m) { |
| 1571 | const dollar = mk(P, '$', startB, startB + 1, []) |
| 1572 | const vn = mk(P, 'variable_name', startB + 1, endB, []) |
| 1573 | return mk(P, 'simple_expansion', startB, endB, [dollar, vn]) |
| 1574 | } |
| 1575 | if (text.length === 2 && text[0] === '$' && SPECIAL_VARS.has(text[1]!)) { |
| 1576 | const dollar = mk(P, '$', startB, startB + 1, []) |
| 1577 | const vn = mk(P, 'special_variable_name', startB + 1, endB, []) |
| 1578 | return mk(P, 'simple_expansion', startB, endB, [dollar, vn]) |
| 1579 | } |
| 1580 | return mk(P, 'word', startB, endB, []) |
| 1581 | } |
| 1582 | |
| 1583 | /** |
| 1584 | * Can the current position start a redirect destination literal? |
no test coverage detected