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

Method parseMappedType

internal/parser/parser.go:3139–3168  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

3137}
3138
3139func (p *Parser) parseMappedType() *ast.Node {
3140 pos := p.nodePos()
3141 p.parseExpected(ast.KindOpenBraceToken)
3142 var readonlyToken *ast.Node // ReadonlyKeyword | PlusToken | MinusToken
3143 if p.token == ast.KindReadonlyKeyword || p.token == ast.KindPlusToken || p.token == ast.KindMinusToken {
3144 readonlyToken = p.parseTokenNode()
3145 if readonlyToken.Kind != ast.KindReadonlyKeyword {
3146 p.parseExpected(ast.KindReadonlyKeyword)
3147 }
3148 }
3149 p.parseExpected(ast.KindOpenBracketToken)
3150 typeParameter := p.parseMappedTypeParameter()
3151 var nameType *ast.TypeNode
3152 if p.parseOptional(ast.KindAsKeyword) {
3153 nameType = p.parseType()
3154 }
3155 p.parseExpected(ast.KindCloseBracketToken)
3156 var questionToken *ast.Node // QuestionToken | PlusToken | MinusToken
3157 if p.token == ast.KindQuestionToken || p.token == ast.KindPlusToken || p.token == ast.KindMinusToken {
3158 questionToken = p.parseTokenNode()
3159 if questionToken.Kind != ast.KindQuestionToken {
3160 p.parseExpected(ast.KindQuestionToken)
3161 }
3162 }
3163 typeNode := p.parseTypeAnnotation()
3164 p.parseSemicolon()
3165 members := p.parseList(PCTypeMembers, (*Parser).parseTypeMember)
3166 p.parseExpected(ast.KindCloseBraceToken)
3167 return p.finishNode(p.factory.NewMappedTypeNode(readonlyToken, typeParameter, nameType, questionToken, typeNode, members), pos)
3168}
3169
3170func (p *Parser) parseMappedTypeParameter() *ast.Node {
3171 pos := p.nodePos()

Callers 1

parseNonArrayTypeMethod · 0.95

Calls 11

nodePosMethod · 0.95
parseExpectedMethod · 0.95
parseTokenNodeMethod · 0.95
parseOptionalMethod · 0.95
parseTypeMethod · 0.95
parseTypeAnnotationMethod · 0.95
parseSemicolonMethod · 0.95
parseListMethod · 0.95
finishNodeMethod · 0.95
NewMappedTypeNodeMethod · 0.80

Tested by

no test coverage detected