( P: ParseState, node: TsNode, allowHerestring = false, )
| 1404 | } |
| 1405 | |
| 1406 | function maybeRedirect( |
| 1407 | P: ParseState, |
| 1408 | node: TsNode, |
| 1409 | allowHerestring = false, |
| 1410 | ): TsNode { |
| 1411 | const redirects: TsNode[] = [] |
| 1412 | while (true) { |
| 1413 | skipBlanks(P.L) |
| 1414 | const save = saveLex(P.L) |
| 1415 | const r = tryParseRedirect(P) |
| 1416 | if (!r) break |
| 1417 | if (r.type === 'herestring_redirect' && !allowHerestring) { |
| 1418 | restoreLex(P.L, save) |
| 1419 | break |
| 1420 | } |
| 1421 | redirects.push(r) |
| 1422 | } |
| 1423 | if (redirects.length === 0) return node |
| 1424 | const last = redirects[redirects.length - 1]! |
| 1425 | return mk(P, 'redirected_statement', node.startIndex, last.endIndex, [ |
| 1426 | node, |
| 1427 | ...redirects, |
| 1428 | ]) |
| 1429 | } |
| 1430 | |
| 1431 | function tryParseAssignment(P: ParseState): TsNode | null { |
| 1432 | const save = saveLex(P.L) |
no test coverage detected