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

Method parseType

internal/parser/parser.go:2611–2634  ·  view source on GitHub ↗

TYPES

()

Source from the content-addressed store, hash-verified

2609// TYPES
2610
2611func (p *Parser) parseType() *ast.TypeNode {
2612 saveContextFlags := p.contextFlags
2613 p.setContextFlags(ast.NodeFlagsTypeExcludesFlags, false)
2614 var typeNode *ast.TypeNode
2615 if p.isStartOfFunctionTypeOrConstructorType() {
2616 typeNode = p.parseFunctionOrConstructorType()
2617 } else {
2618 pos := p.nodePos()
2619 typeNode = p.parseUnionTypeOrHigher()
2620 if !p.inDisallowConditionalTypesContext() && !p.hasPrecedingLineBreak() && p.parseOptional(ast.KindExtendsKeyword) {
2621 // The type following 'extends' is not permitted to be another conditional type
2622 extendsType := doInContext(p, ast.NodeFlagsDisallowConditionalTypesContext, true, (*Parser).parseType)
2623 p.parseExpected(ast.KindQuestionToken)
2624 trueType := doInContext(p, ast.NodeFlagsDisallowConditionalTypesContext, false, (*Parser).parseType)
2625 p.parseExpected(ast.KindColonToken)
2626 falseType := doInContext(p, ast.NodeFlagsDisallowConditionalTypesContext, false, (*Parser).parseType)
2627 conditionalType := p.factory.NewConditionalTypeNode(typeNode, extendsType, trueType, falseType)
2628 p.finishNode(conditionalType, pos)
2629 typeNode = conditionalType
2630 }
2631 }
2632 p.contextFlags = saveContextFlags
2633 return typeNode
2634}
2635
2636func (p *Parser) parseUnionTypeOrHigher() *ast.TypeNode {
2637 return p.parseUnionOrIntersectionType(ast.KindBarToken, (*Parser).parseIntersectionTypeOrHigher)

Callers 15

parseTypeAnnotationMethod · 0.95
parseImportTypeMethod · 0.95
parseMappedTypeMethod · 0.95
parseTypeParameterMethod · 0.95
parseTupleElementTypeMethod · 0.95

Calls 12

setContextFlagsMethod · 0.95
nodePosMethod · 0.95
hasPrecedingLineBreakMethod · 0.95
parseOptionalMethod · 0.95
parseExpectedMethod · 0.95
finishNodeMethod · 0.95
doInContextFunction · 0.85

Tested by

no test coverage detected