(inExpressionContext bool)
| 4877 | } |
| 4878 | |
| 4879 | func (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 | |
| 4903 | func (p *Parser) scanJsxText() ast.Kind { |
| 4904 | p.token = p.scanner.ScanJsxToken() |
no test coverage detected