()
| 3029 | } |
| 3030 | |
| 3031 | func (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 | |
| 3073 | func (p *Parser) parseImportAttribute() *ast.Node { |
| 3074 | pos := p.nodePos() |
no test coverage detected