(token ast.Kind, skipKeyword bool)
| 3088 | } |
| 3089 | |
| 3090 | func (p *Parser) parseImportAttributes(token ast.Kind, skipKeyword bool) *ast.Node { |
| 3091 | pos := p.nodePos() |
| 3092 | if !skipKeyword { |
| 3093 | p.parseExpected(token) |
| 3094 | } |
| 3095 | var elements *ast.NodeList |
| 3096 | var multiLine bool |
| 3097 | openBracePosition := p.scanner.TokenStart() |
| 3098 | if p.parseExpected(ast.KindOpenBraceToken) { |
| 3099 | multiLine = p.hasPrecedingLineBreak() |
| 3100 | elements = p.parseDelimitedList(PCImportAttributes, (*Parser).parseImportAttribute) |
| 3101 | if !p.parseExpected(ast.KindCloseBraceToken) { |
| 3102 | if len(p.diagnostics) != 0 { |
| 3103 | lastDiagnostic := p.diagnostics[len(p.diagnostics)-1] |
| 3104 | if lastDiagnostic.Code() == diagnostics.X_0_expected.Code() { |
| 3105 | related := ast.NewDiagnostic(nil, core.NewTextRange(openBracePosition, openBracePosition), diagnostics.The_parser_expected_to_find_a_1_to_match_the_0_token_here, "{", "}") |
| 3106 | lastDiagnostic.AddRelatedInfo(related) |
| 3107 | } |
| 3108 | } |
| 3109 | } |
| 3110 | } else { |
| 3111 | elements = p.parseEmptyNodeList() |
| 3112 | } |
| 3113 | return p.finishNode(p.factory.NewImportAttributes(token, elements, multiLine), pos) |
| 3114 | } |
| 3115 | |
| 3116 | func (p *Parser) parseTypeQuery() *ast.Node { |
| 3117 | pos := p.nodePos() |
no test coverage detected