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

Method parseYieldExpression

internal/parser/parser.go:4183–4199  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

4181}
4182
4183func (p *Parser) parseYieldExpression() *ast.Node {
4184 pos := p.nodePos()
4185 // YieldExpression[In] :
4186 // yield
4187 // yield [no LineTerminator here] [Lexical goal InputElementRegExp]AssignmentExpression[?In, Yield]
4188 // yield [no LineTerminator here] * [Lexical goal InputElementRegExp]AssignmentExpression[?In, Yield]
4189 p.nextToken()
4190 var result *ast.Node
4191 if !p.hasPrecedingLineBreak() && (p.token == ast.KindAsteriskToken || p.isStartOfExpression()) {
4192 result = p.factory.NewYieldExpression(p.parseOptionalToken(ast.KindAsteriskToken), p.parseAssignmentExpressionOrHigher())
4193 } else {
4194 // if the next token is not on the same line as yield. or we don't have an '*' or
4195 // the start of an expression, then this is just a simple "yield" expression.
4196 result = p.factory.NewYieldExpression(nil /*asteriskToken*/, nil /*expression*/)
4197 }
4198 return p.finishNode(result, pos)
4199}
4200
4201func (p *Parser) isParenthesizedArrowFunctionExpression() core.Tristate {
4202 if p.token == ast.KindOpenParenToken || p.token == ast.KindLessThanToken || p.token == ast.KindAsyncKeyword {

Calls 8

nodePosMethod · 0.95
nextTokenMethod · 0.95
hasPrecedingLineBreakMethod · 0.95
isStartOfExpressionMethod · 0.95
parseOptionalTokenMethod · 0.95
finishNodeMethod · 0.95
NewYieldExpressionMethod · 0.80

Tested by

no test coverage detected