* Parse ES7 UpdateExpression. UpdateExpression is used instead of ES6's PostFixExpression. * * ES7 UpdateExpression[yield]: * 1) LeftHandSideExpression[?yield] * 2) LeftHandSideExpression[?yield] [[no LineTerminator here]]++ * 3) LeftHandSi
()
| 35049 | * In TypeScript (2), (3) are parsed as PostfixUnaryExpression. (4), (5) are parsed as PrefixUnaryExpression |
| 35050 | */ |
| 35051 | function parseUpdateExpression() { |
| 35052 | if (token() === 45 /* SyntaxKind.PlusPlusToken */ || token() === 46 /* SyntaxKind.MinusMinusToken */) { |
| 35053 | var pos = getNodePos(); |
| 35054 | return finishNode(factory.createPrefixUnaryExpression(token(), nextTokenAnd(parseLeftHandSideExpressionOrHigher)), pos); |
| 35055 | } |
| 35056 | else if (languageVariant === 1 /* LanguageVariant.JSX */ && token() === 29 /* SyntaxKind.LessThanToken */ && lookAhead(nextTokenIsIdentifierOrKeywordOrGreaterThan)) { |
| 35057 | // JSXElement is part of primaryExpression |
| 35058 | return parseJsxElementOrSelfClosingElementOrFragment(/*inExpressionContext*/ true); |
| 35059 | } |
| 35060 | var expression = parseLeftHandSideExpressionOrHigher(); |
| 35061 | ts.Debug.assert(ts.isLeftHandSideExpression(expression)); |
| 35062 | if ((token() === 45 /* SyntaxKind.PlusPlusToken */ || token() === 46 /* SyntaxKind.MinusMinusToken */) && !scanner.hasPrecedingLineBreak()) { |
| 35063 | var operator = token(); |
| 35064 | nextToken(); |
| 35065 | return finishNode(factory.createPostfixUnaryExpression(expression, operator), expression.pos); |
| 35066 | } |
| 35067 | return expression; |
| 35068 | } |
| 35069 | function parseLeftHandSideExpressionOrHigher() { |
| 35070 | // Original Ecma: |
| 35071 | // LeftHandSideExpression: See 11.2 |
no test coverage detected
searching dependent graphs…