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

Method parseFunctionDeclaration

internal/parser/parser.go:1716–1738  ·  view source on GitHub ↗
(pos int, jsdoc jsdocScannerInfo, modifiers *ast.ModifierList)

Source from the content-addressed store, hash-verified

1714}
1715
1716func (p *Parser) parseFunctionDeclaration(pos int, jsdoc jsdocScannerInfo, modifiers *ast.ModifierList) *ast.Node {
1717 p.parseExpected(ast.KindFunctionKeyword)
1718 asteriskToken := p.parseOptionalToken(ast.KindAsteriskToken)
1719 // We don't parse the name here in await context, instead we will report a grammar error in the checker.
1720 var name *ast.Node
1721 if modifiers == nil || modifiers.ModifierFlags&ast.ModifierFlagsDefault == 0 || p.isBindingIdentifier() {
1722 name = p.parseBindingIdentifier()
1723 }
1724 signatureFlags := core.IfElse(asteriskToken != nil, ParseFlagsYield, ParseFlagsNone) | core.IfElse(modifiers != nil && modifiers.ModifierFlags&ast.ModifierFlagsAsync != 0, ParseFlagsAwait, ParseFlagsNone)
1725 typeParameters := p.parseTypeParameters()
1726 saveContextFlags := p.contextFlags
1727 if modifiers != nil && modifiers.ModifierFlags&ast.ModifierFlagsExport != 0 {
1728 p.setContextFlags(ast.NodeFlagsAwaitContext, true)
1729 }
1730 parameters := p.parseParameters(signatureFlags)
1731 returnType := p.parseReturnType(ast.KindColonToken, false /*isType*/)
1732 body := p.parseFunctionBlockOrSemicolon(signatureFlags, diagnostics.X_or_expected)
1733 p.contextFlags = saveContextFlags
1734 result := p.finishNode(p.factory.NewFunctionDeclaration(modifiers, asteriskToken, name, typeParameters, parameters, returnType, nil /*fullSignature*/, body), pos)
1735 p.withJSDoc(result, jsdoc)
1736 p.checkJSSyntax(result)
1737 return result
1738}
1739
1740func (p *Parser) parseClassDeclaration(pos int, jsdoc jsdocScannerInfo, modifiers *ast.ModifierList) *ast.Node {
1741 return p.parseClassDeclarationOrExpression(pos, jsdoc, modifiers, ast.KindClassDeclaration)

Callers 2

parseStatementMethod · 0.95

Calls 14

parseExpectedMethod · 0.95
parseOptionalTokenMethod · 0.95
isBindingIdentifierMethod · 0.95
parseTypeParametersMethod · 0.95
setContextFlagsMethod · 0.95
parseParametersMethod · 0.95
parseReturnTypeMethod · 0.95
finishNodeMethod · 0.95
withJSDocMethod · 0.95
checkJSSyntaxMethod · 0.95

Tested by

no test coverage detected