MCPcopy Create free account
hub / github.com/microsoft/typescript-go / parseImportType

Method parseImportType

internal/parser/parser.go:3031–3071  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

3029}
3030
3031func (p *Parser) parseImportType() *ast.Node {
3032 p.sourceFlags |= ast.NodeFlagsPossiblyContainsDynamicImport
3033 pos := p.nodePos()
3034 isTypeOf := p.parseOptional(ast.KindTypeOfKeyword)
3035 p.parseExpected(ast.KindImportKeyword)
3036 p.parseExpected(ast.KindOpenParenToken)
3037 typeNode := p.parseType()
3038 var attributes *ast.Node
3039 if p.parseOptional(ast.KindCommaToken) {
3040 openBracePosition := p.scanner.TokenStart()
3041 p.parseExpected(ast.KindOpenBraceToken)
3042 currentToken := p.token
3043 if currentToken == ast.KindWithKeyword || currentToken == ast.KindAssertKeyword {
3044 if currentToken == ast.KindAssertKeyword {
3045 p.parseErrorAtCurrentToken(diagnostics.Import_assertions_have_been_replaced_by_import_attributes_Use_with_instead_of_assert)
3046 }
3047 p.nextToken()
3048 } else {
3049 p.parseErrorAtCurrentToken(diagnostics.X_0_expected, scanner.TokenToString(ast.KindWithKeyword))
3050 }
3051 p.parseExpected(ast.KindColonToken)
3052 attributes = p.parseImportAttributes(currentToken, true /*skipKeyword*/)
3053 p.parseOptional(ast.KindCommaToken)
3054 if !p.parseExpected(ast.KindCloseBraceToken) {
3055 if len(p.diagnostics) != 0 {
3056 lastDiagnostic := p.diagnostics[len(p.diagnostics)-1]
3057 if lastDiagnostic.Code() == diagnostics.X_0_expected.Code() {
3058 related := ast.NewDiagnostic(nil, core.NewTextRange(openBracePosition, openBracePosition), diagnostics.The_parser_expected_to_find_a_1_to_match_the_0_token_here, "{", "}")
3059 lastDiagnostic.AddRelatedInfo(related)
3060 }
3061 }
3062 }
3063 }
3064 p.parseExpected(ast.KindCloseParenToken)
3065 var qualifier *ast.Node
3066 if p.parseOptional(ast.KindDotToken) {
3067 qualifier = p.parseEntityNameOfTypeReference()
3068 }
3069 typeArguments := p.parseTypeArgumentsOfTypeReference()
3070 return p.finishNode(p.factory.NewImportTypeNode(isTypeOf, typeNode, attributes, qualifier, typeArguments), pos)
3071}
3072
3073func (p *Parser) parseImportAttribute() *ast.Node {
3074 pos := p.nodePos()

Callers 1

parseNonArrayTypeMethod · 0.95

Calls 15

nodePosMethod · 0.95
parseOptionalMethod · 0.95
parseExpectedMethod · 0.95
parseTypeMethod · 0.95
nextTokenMethod · 0.95
parseImportAttributesMethod · 0.95
finishNodeMethod · 0.95
TokenToStringFunction · 0.92
NewDiagnosticFunction · 0.92

Tested by

no test coverage detected