()
| 5759 | } |
| 5760 | |
| 5761 | func (p *Parser) parseNewExpressionOrNewDotTarget() *ast.Node { |
| 5762 | pos := p.nodePos() |
| 5763 | p.parseExpected(ast.KindNewKeyword) |
| 5764 | if p.parseOptional(ast.KindDotToken) { |
| 5765 | name := p.parseIdentifierName() |
| 5766 | return p.finishNode(p.factory.NewMetaProperty(ast.KindNewKeyword, name), pos) |
| 5767 | } |
| 5768 | expressionPos := p.nodePos() |
| 5769 | expression := p.parseMemberExpressionRest(expressionPos, p.parsePrimaryExpression(), false /*allowOptionalChain*/) |
| 5770 | var typeArguments *ast.NodeList |
| 5771 | // Absorb type arguments into NewExpression when preceding expression is ExpressionWithTypeArguments |
| 5772 | if expression.Kind == ast.KindExpressionWithTypeArguments { |
| 5773 | typeArguments = expression.TypeArgumentList() |
| 5774 | expression = expression.AsExpressionWithTypeArguments().Expression |
| 5775 | } |
| 5776 | if p.token == ast.KindQuestionDotToken { |
| 5777 | p.parseErrorAtCurrentToken(diagnostics.Invalid_optional_chain_from_new_expression_Did_you_mean_to_call_0, scanner.GetTextOfNodeFromSourceText(p.sourceText, expression, false /*includeTrivia*/)) |
| 5778 | } |
| 5779 | var argumentList *ast.NodeList |
| 5780 | if p.token == ast.KindOpenParenToken { |
| 5781 | argumentList = p.parseArgumentList() |
| 5782 | } |
| 5783 | result := p.checkJSSyntax(p.finishNode(p.factory.NewNewExpression(expression, typeArguments, argumentList), pos)) |
| 5784 | p.unparseExpressionWithTypeArguments(expression, typeArguments, result) |
| 5785 | return result |
| 5786 | } |
| 5787 | |
| 5788 | func (p *Parser) parseKeywordExpression() *ast.Node { |
| 5789 | pos := p.nodePos() |
no test coverage detected