()
| 22 | } |
| 23 | |
| 24 | func (p *parser) parseQueryDocument() *QueryDocument { |
| 25 | var doc QueryDocument |
| 26 | for p.peek().Kind != lexer.EOF { |
| 27 | if p.err != nil { |
| 28 | return &doc |
| 29 | } |
| 30 | doc.Position = p.peekPos() |
| 31 | switch p.peek().Kind { |
| 32 | case lexer.Name: |
| 33 | switch p.peek().Value { |
| 34 | case "query", "mutation", "subscription": |
| 35 | doc.Operations = append(doc.Operations, p.parseOperationDefinition()) |
| 36 | case "fragment": |
| 37 | doc.Fragments = append(doc.Fragments, p.parseFragmentDefinition()) |
| 38 | default: |
| 39 | p.unexpectedError() |
| 40 | } |
| 41 | case lexer.BraceL: |
| 42 | doc.Operations = append(doc.Operations, p.parseOperationDefinition()) |
| 43 | default: |
| 44 | p.unexpectedError() |
| 45 | } |
| 46 | } |
| 47 | |
| 48 | return &doc |
| 49 | } |
| 50 | |
| 51 | func (p *parser) parseOperationDefinition() *OperationDefinition { |
| 52 | if p.peek().Kind == lexer.BraceL { |
no test coverage detected