MCPcopy Create free account
hub / github.com/microsoft/typescript-go / parseNewExpressionOrNewDotTarget

Method parseNewExpressionOrNewDotTarget

internal/parser/parser.go:5761–5786  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

5759}
5760
5761func (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
5788func (p *Parser) parseKeywordExpression() *ast.Node {
5789 pos := p.nodePos()

Callers 1

Calls 15

nodePosMethod · 0.95
parseExpectedMethod · 0.95
parseOptionalMethod · 0.95
parseIdentifierNameMethod · 0.95
finishNodeMethod · 0.95
parseArgumentListMethod · 0.95
checkJSSyntaxMethod · 0.95

Tested by

no test coverage detected