(P: ParseState, closer: string)
| 3699 | } |
| 3700 | |
| 3701 | function parseTestOr(P: ParseState, closer: string): TsNode | null { |
| 3702 | let left = parseTestAnd(P, closer) |
| 3703 | if (!left) return null |
| 3704 | while (true) { |
| 3705 | skipBlanks(P.L) |
| 3706 | const save = saveLex(P.L) |
| 3707 | if (peek(P.L) === '|' && peek(P.L, 1) === '|') { |
| 3708 | const s = P.L.b |
| 3709 | advance(P.L) |
| 3710 | advance(P.L) |
| 3711 | const op = mk(P, '||', s, P.L.b, []) |
| 3712 | const right = parseTestAnd(P, closer) |
| 3713 | if (!right) { |
| 3714 | restoreLex(P.L, save) |
| 3715 | break |
| 3716 | } |
| 3717 | left = mk(P, 'binary_expression', left.startIndex, right.endIndex, [ |
| 3718 | left, |
| 3719 | op, |
| 3720 | right, |
| 3721 | ]) |
| 3722 | } else { |
| 3723 | break |
| 3724 | } |
| 3725 | } |
| 3726 | return left |
| 3727 | } |
| 3728 | |
| 3729 | function parseTestAnd(P: ParseState, closer: string): TsNode | null { |
| 3730 | let left = parseTestUnary(P, closer) |
no test coverage detected