(pos Pos)
| 635 | } |
| 636 | |
| 637 | func (p *Parser) parseColumnArgList(pos Pos) (*ColumnArgList, error) { |
| 638 | if err := p.expectTokenKind(TokenKindLParen); err != nil { |
| 639 | return nil, err |
| 640 | } |
| 641 | distinct := p.tryConsumeKeywords(KeywordDistinct) |
| 642 | |
| 643 | var items []Expr |
| 644 | for !p.lexer.isEOF() && !p.matchTokenKind(TokenKindRParen) { |
| 645 | item, err := p.parseExpr(p.Pos()) |
| 646 | if err != nil { |
| 647 | return nil, err |
| 648 | } |
| 649 | items = append(items, item) |
| 650 | if p.tryConsumeTokenKind(TokenKindComma) == nil { |
| 651 | break |
| 652 | } |
| 653 | } |
| 654 | rightParenPos := p.Pos() |
| 655 | if err := p.expectTokenKind(TokenKindRParen); err != nil { |
| 656 | return nil, err |
| 657 | } |
| 658 | return &ColumnArgList{ |
| 659 | LeftParenPos: pos, |
| 660 | RightParenPos: rightParenPos, |
| 661 | Distinct: distinct, |
| 662 | Items: items, |
| 663 | }, nil |
| 664 | } |
| 665 | |
| 666 | func (p *Parser) parseFunctionParams(pos Pos) (*ParamExprList, error) { |
| 667 | if err := p.expectTokenKind(TokenKindLParen); err != nil { |
no test coverage detected