()
| 4720 | } |
| 4721 | |
| 4722 | func (p *Parser) parseUpdateExpression() *ast.Expression { |
| 4723 | pos := p.nodePos() |
| 4724 | if p.token == ast.KindPlusPlusToken || p.token == ast.KindMinusMinusToken { |
| 4725 | operator := p.token |
| 4726 | p.nextToken() |
| 4727 | return p.finishNode(p.factory.NewPrefixUnaryExpression(operator, p.parseLeftHandSideExpressionOrHigher()), pos) |
| 4728 | } else if p.languageVariant == core.LanguageVariantJSX && p.token == ast.KindLessThanToken && p.lookAhead((*Parser).nextTokenIsIdentifierOrKeywordOrGreaterThan) { |
| 4729 | // JSXElement is part of primaryExpression |
| 4730 | return p.parseJsxElementOrSelfClosingElementOrFragment(true /*inExpressionContext*/, -1 /*topInvalidNodePosition*/, nil /*openingTag*/, false /*mustBeUnary*/) |
| 4731 | } |
| 4732 | expression := p.parseLeftHandSideExpressionOrHigher() |
| 4733 | if (p.token == ast.KindPlusPlusToken || p.token == ast.KindMinusMinusToken) && !p.hasPrecedingLineBreak() { |
| 4734 | operator := p.token |
| 4735 | p.nextToken() |
| 4736 | return p.finishNode(p.factory.NewPostfixUnaryExpression(expression, operator), pos) |
| 4737 | } |
| 4738 | return expression |
| 4739 | } |
| 4740 | |
| 4741 | func (p *Parser) parseJsxElementOrSelfClosingElementOrFragment(inExpressionContext bool, topInvalidNodePosition int, openingTag *ast.Node, mustBeUnary bool) *ast.Expression { |
| 4742 | pos := p.nodePos() |
no test coverage detected