MCPcopy Index your code
hub / github.com/microsoft/typescript-go / parseJsxExpression

Method parseJsxExpression

internal/parser/parser.go:4879–4901  ·  view source on GitHub ↗
(inExpressionContext bool)

Source from the content-addressed store, hash-verified

4877}
4878
4879func (p *Parser) parseJsxExpression(inExpressionContext bool) *ast.Node {
4880 pos := p.nodePos()
4881 if !p.parseExpected(ast.KindOpenBraceToken) {
4882 return nil
4883 }
4884 var dotDotDotToken *ast.Node
4885 var expression *ast.Expression
4886 if p.token != ast.KindCloseBraceToken {
4887 if !inExpressionContext {
4888 dotDotDotToken = p.parseOptionalToken(ast.KindDotDotDotToken)
4889 }
4890 // Only an AssignmentExpression is valid here per the JSX spec,
4891 // but we can unambiguously parse a comma sequence and provide
4892 // a better error message in grammar checking.
4893 expression = p.parseExpression()
4894 }
4895 if inExpressionContext {
4896 p.parseExpected(ast.KindCloseBraceToken)
4897 } else if p.parseExpectedWithoutAdvancing(ast.KindCloseBraceToken) {
4898 p.scanJsxText()
4899 }
4900 return p.finishNode(p.factory.NewJsxExpression(dotDotDotToken, expression), pos)
4901}
4902
4903func (p *Parser) scanJsxText() ast.Kind {
4904 p.token = p.scanner.ScanJsxToken()

Callers 2

parseJsxChildMethod · 0.95

Calls 8

nodePosMethod · 0.95
parseExpectedMethod · 0.95
parseOptionalTokenMethod · 0.95
parseExpressionMethod · 0.95
scanJsxTextMethod · 0.95
finishNodeMethod · 0.95
NewJsxExpressionMethod · 0.80

Tested by

no test coverage detected