Skip to content

Commit 9da9f1b

Browse files
authored
Refactor expectTokenKind's return value to keep consistent with expectKeyword (#152)
1 parent 4955a88 commit 9da9f1b

File tree

5 files changed

+71
-69
lines changed

5 files changed

+71
-69
lines changed

parser/parser_alter.go

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -169,7 +169,7 @@ func (p *Parser) parseProjectionOrderBy(pos Pos) (*ProjectionOrderByClause, erro
169169
}
170170

171171
func (p *Parser) parseProjectionSelect(pos Pos) (*ProjectionSelectStmt, error) {
172-
if _, err := p.expectTokenKind(TokenKindLParen); err != nil {
172+
if err := p.expectTokenKind(TokenKindLParen); err != nil {
173173
return nil, err
174174
}
175175
with, err := p.tryParseWithClause(p.Pos())
@@ -191,13 +191,14 @@ func (p *Parser) parseProjectionSelect(pos Pos) (*ProjectionSelectStmt, error) {
191191
if err != nil {
192192
return nil, err
193193
}
194-
rightParen, err := p.expectTokenKind(TokenKindRParen)
195-
if err != nil {
194+
195+
lastToken := p.last()
196+
if err := p.expectTokenKind(TokenKindRParen); err != nil {
196197
return nil, err
197198
}
198199
return &ProjectionSelectStmt{
199200
LeftParenPos: pos,
200-
RightParenPos: rightParen.Pos,
201+
RightParenPos: lastToken.Pos,
201202
With: with,
202203
SelectColumns: columns,
203204
GroupBy: groupBy,

parser/parser_column.go

Lines changed: 32 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ func (p *Parser) parseInfix(expr Expr, precedence int) (Expr, error) {
103103
if err != nil {
104104
return nil, err
105105
}
106-
if _, err = p.expectTokenKind(TokenKindLParen); err != nil {
106+
if err := p.expectTokenKind(TokenKindLParen); err != nil {
107107
return nil, err
108108
}
109109
// it's a tuple type definition after "::" operator
@@ -240,14 +240,14 @@ func (p *Parser) parseSubExpr(pos Pos, precedence int) (Expr, error) {
240240
}
241241

242242
func (p *Parser) parseTernaryExpr(condition Expr) (*TernaryOperation, error) {
243-
if _, err := p.expectTokenKind(TokenKindQuestionMark); err != nil {
243+
if err := p.expectTokenKind(TokenKindQuestionMark); err != nil {
244244
return nil, err
245245
}
246246
trueExpr, err := p.parseExpr(p.Pos())
247247
if err != nil {
248248
return nil, err
249249
}
250-
if _, err := p.expectTokenKind(TokenKindColon); err != nil {
250+
if err := p.expectTokenKind(TokenKindColon); err != nil {
251251
return nil, err
252252
}
253253
falseExpr, err := p.parseExpr(p.Pos())
@@ -265,7 +265,7 @@ func (p *Parser) parseColumnExtractExpr(pos Pos) (*ExtractExpr, error) {
265265
if err := p.expectKeyword(KeywordExtract); err != nil {
266266
return nil, err
267267
}
268-
if _, err := p.expectTokenKind(TokenKindLParen); err != nil {
268+
if err := p.expectTokenKind(TokenKindLParen); err != nil {
269269
return nil, err
270270
}
271271

@@ -287,7 +287,7 @@ func (p *Parser) parseColumnExtractExpr(pos Pos) (*ExtractExpr, error) {
287287
if err != nil {
288288
return nil, err
289289
}
290-
if _, err := p.expectTokenKind(TokenKindRParen); err != nil {
290+
if err := p.expectTokenKind(TokenKindRParen); err != nil {
291291
return nil, err
292292
}
293293
return &ExtractExpr{
@@ -413,7 +413,7 @@ func (p *Parser) parseColumnCastExpr(pos Pos) (Expr, error) {
413413
return nil, err
414414
}
415415

416-
if _, err := p.expectTokenKind(TokenKindLParen); err != nil {
416+
if err := p.expectTokenKind(TokenKindLParen); err != nil {
417417
return nil, err
418418
}
419419

@@ -444,7 +444,7 @@ func (p *Parser) parseColumnCastExpr(pos Pos) (Expr, error) {
444444
return nil, err
445445
}
446446

447-
if _, err := p.expectTokenKind(TokenKindRParen); err != nil {
447+
if err := p.expectTokenKind(TokenKindRParen); err != nil {
448448
return nil, err
449449
}
450450

@@ -562,7 +562,7 @@ func (p *Parser) parseFunctionExpr(_ Pos) (*FunctionExpr, error) {
562562
}
563563

564564
func (p *Parser) parseColumnArgList(pos Pos) (*ColumnArgList, error) {
565-
if _, err := p.expectTokenKind(TokenKindLParen); err != nil {
565+
if err := p.expectTokenKind(TokenKindLParen); err != nil {
566566
return nil, err
567567
}
568568
distinct := p.tryConsumeKeywords(KeywordDistinct)
@@ -579,7 +579,7 @@ func (p *Parser) parseColumnArgList(pos Pos) (*ColumnArgList, error) {
579579
}
580580
}
581581
rightParenPos := p.Pos()
582-
if _, err := p.expectTokenKind(TokenKindRParen); err != nil {
582+
if err := p.expectTokenKind(TokenKindRParen); err != nil {
583583
return nil, err
584584
}
585585
return &ColumnArgList{
@@ -591,15 +591,15 @@ func (p *Parser) parseColumnArgList(pos Pos) (*ColumnArgList, error) {
591591
}
592592

593593
func (p *Parser) parseFunctionParams(pos Pos) (*ParamExprList, error) {
594-
if _, err := p.expectTokenKind(TokenKindLParen); err != nil {
594+
if err := p.expectTokenKind(TokenKindLParen); err != nil {
595595
return nil, err
596596
}
597597
params, err := p.parseColumnExprListWithLParen(p.Pos())
598598
if err != nil {
599599
return nil, err
600600
}
601601
rightParenPos := p.Pos()
602-
if _, err := p.expectTokenKind(TokenKindRParen); err != nil {
602+
if err := p.expectTokenKind(TokenKindRParen); err != nil {
603603
return nil, err
604604
}
605605
paramExprList := &ParamExprList{
@@ -622,7 +622,7 @@ func (p *Parser) parseFunctionParams(pos Pos) (*ParamExprList, error) {
622622
}
623623

624624
func (p *Parser) parseMapLiteral(pos Pos) (*MapLiteral, error) {
625-
if _, err := p.expectTokenKind(TokenKindLBrace); err != nil {
625+
if err := p.expectTokenKind(TokenKindLBrace); err != nil {
626626
return nil, err
627627
}
628628

@@ -632,7 +632,7 @@ func (p *Parser) parseMapLiteral(pos Pos) (*MapLiteral, error) {
632632
if err != nil {
633633
return nil, err
634634
}
635-
if _, err := p.expectTokenKind(TokenKindColon); err != nil {
635+
if err := p.expectTokenKind(TokenKindColon); err != nil {
636636
return nil, err
637637
}
638638
value, err := p.parseExpr(p.Pos())
@@ -648,7 +648,7 @@ func (p *Parser) parseMapLiteral(pos Pos) (*MapLiteral, error) {
648648
}
649649
}
650650
rightBracePos := p.Pos()
651-
if _, err := p.expectTokenKind(TokenKindRBrace); err != nil {
651+
if err := p.expectTokenKind(TokenKindRBrace); err != nil {
652652
return nil, err
653653
}
654654
return &MapLiteral{
@@ -659,23 +659,23 @@ func (p *Parser) parseMapLiteral(pos Pos) (*MapLiteral, error) {
659659
}
660660

661661
func (p *Parser) parseQueryParam(pos Pos) (*QueryParam, error) {
662-
if _, err := p.expectTokenKind(TokenKindLBrace); err != nil {
662+
if err := p.expectTokenKind(TokenKindLBrace); err != nil {
663663
return nil, err
664664
}
665665

666666
ident, err := p.parseIdent()
667667
if err != nil {
668668
return nil, err
669669
}
670-
if _, err := p.expectTokenKind(TokenKindColon); err != nil {
670+
if err := p.expectTokenKind(TokenKindColon); err != nil {
671671
return nil, err
672672
}
673673
columnType, err := p.parseColumnType(p.Pos())
674674
if err != nil {
675675
return nil, err
676676
}
677677
rightBracePos := p.Pos()
678-
if _, err := p.expectTokenKind(TokenKindRBrace); err != nil {
678+
if err := p.expectTokenKind(TokenKindRBrace); err != nil {
679679
return nil, err
680680
}
681681
return &QueryParam{
@@ -687,15 +687,15 @@ func (p *Parser) parseQueryParam(pos Pos) (*QueryParam, error) {
687687
}
688688

689689
func (p *Parser) parseArrayParams(pos Pos) (*ArrayParamList, error) {
690-
if _, err := p.expectTokenKind(TokenKindLBracket); err != nil {
690+
if err := p.expectTokenKind(TokenKindLBracket); err != nil {
691691
return nil, err
692692
}
693693
params, err := p.parseColumnExprListWithSquareBracket(p.Pos())
694694
if err != nil {
695695
return nil, err
696696
}
697697
rightBracketPos := p.Pos()
698-
if _, err := p.expectTokenKind(TokenKindRBracket); err != nil {
698+
if err := p.expectTokenKind(TokenKindRBracket); err != nil {
699699
return nil, err
700700
}
701701
return &ArrayParamList{
@@ -878,7 +878,7 @@ func (p *Parser) parseComplexType(name *Ident, pos Pos) (*ComplexType, error) {
878878
}
879879
}
880880
rightParenPos := p.Pos()
881-
if _, err := p.expectTokenKind(TokenKindRParen); err != nil {
881+
if err := p.expectTokenKind(TokenKindRParen); err != nil {
882882
return nil, err
883883
}
884884
return &ComplexType{
@@ -911,7 +911,7 @@ func (p *Parser) parseEnumType(name *Ident, pos Pos) (*EnumType, error) {
911911
if len(enumType.Values) > 0 {
912912
enumType.ListEnd = enumType.Values[len(enumType.Values)-1].Value.NumEnd
913913
}
914-
if _, err := p.expectTokenKind(TokenKindRParen); err != nil {
914+
if err := p.expectTokenKind(TokenKindRParen); err != nil {
915915
return nil, err
916916
}
917917
return enumType, nil
@@ -933,7 +933,7 @@ func (p *Parser) parseColumnTypeWithParams(name *Ident, pos Pos) (*TypeWithParam
933933
}
934934

935935
rightParenPos := p.Pos()
936-
if _, err := p.expectTokenKind(TokenKindRParen); err != nil {
936+
if err := p.expectTokenKind(TokenKindRParen); err != nil {
937937
return nil, err
938938
}
939939
return &TypeWithParams{
@@ -1005,15 +1005,15 @@ func (p *Parser) parseJSONType(name *Ident, pos Pos) (*JSONType, error) {
10051005
}
10061006
}
10071007

1008-
rparenPos := p.Pos()
1009-
if _, err := p.expectTokenKind(TokenKindRParen); err != nil {
1008+
rightParenPos := p.Pos()
1009+
if err := p.expectTokenKind(TokenKindRParen); err != nil {
10101010
return nil, err
10111011
}
10121012
return &JSONType{
10131013
Name: name,
10141014
Options: &JSONOptions{
10151015
LParen: pos,
1016-
RParen: rparenPos,
1016+
RParen: rightParenPos,
10171017
Items: options,
10181018
},
10191019
}, nil
@@ -1025,7 +1025,7 @@ func (p *Parser) parseNestedType(name *Ident, pos Pos) (*NestedType, error) {
10251025
return nil, err
10261026
}
10271027
rightParenPos := p.Pos()
1028-
if _, err := p.expectTokenKind(TokenKindRParen); err != nil {
1028+
if err := p.expectTokenKind(TokenKindRParen); err != nil {
10291029
return nil, err
10301030
}
10311031
return &NestedType{
@@ -1041,7 +1041,7 @@ func (p *Parser) tryParseCompressionCodecs(pos Pos) (*CompressionCodec, error) {
10411041
return nil, nil // nolint
10421042
}
10431043

1044-
if _, err := p.expectTokenKind(TokenKindLParen); err != nil {
1044+
if err := p.expectTokenKind(TokenKindLParen); err != nil {
10451045
return nil, err
10461046
}
10471047

@@ -1063,7 +1063,7 @@ func (p *Parser) tryParseCompressionCodecs(pos Pos) (*CompressionCodec, error) {
10631063
return nil, err
10641064
}
10651065
// consume comma
1066-
if _, err := p.expectTokenKind(TokenKindComma); err != nil {
1066+
if err := p.expectTokenKind(TokenKindComma); err != nil {
10671067
return nil, err
10681068
}
10691069
name, err = p.parseIdent()
@@ -1083,7 +1083,7 @@ func (p *Parser) tryParseCompressionCodecs(pos Pos) (*CompressionCodec, error) {
10831083
}
10841084

10851085
rightParenPos := p.last().End
1086-
if _, err := p.expectTokenKind(TokenKindRParen); err != nil {
1086+
if err := p.expectTokenKind(TokenKindRParen); err != nil {
10871087
return nil, err
10881088
}
10891089

@@ -1103,7 +1103,7 @@ func (p *Parser) parseEnumValueExpr(pos Pos) (*EnumValue, error) {
11031103
return nil, err
11041104
}
11051105

1106-
if _, err := p.expectTokenKind(TokenKindSingleEQ); err != nil {
1106+
if err := p.expectTokenKind(TokenKindSingleEQ); err != nil {
11071107
return nil, err
11081108
}
11091109

@@ -1118,7 +1118,7 @@ func (p *Parser) parseEnumValueExpr(pos Pos) (*EnumValue, error) {
11181118
}
11191119

11201120
func (p *Parser) parseColumnStar(pos Pos) (*Ident, error) {
1121-
if _, err := p.expectTokenKind("*"); err != nil {
1121+
if err := p.expectTokenKind("*"); err != nil {
11221122
return nil, err
11231123
}
11241124
return &Ident{
@@ -1138,7 +1138,7 @@ func (p *Parser) tryParseCompressionLevel(pos Pos) (*NumberLiteral, error) {
11381138
return nil, err
11391139
}
11401140

1141-
if _, err := p.expectTokenKind(TokenKindRParen); err != nil {
1141+
if err := p.expectTokenKind(TokenKindRParen); err != nil {
11421142
return nil, err
11431143
}
11441144
return num, nil

parser/parser_common.go

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -41,11 +41,11 @@ func (p *Parser) matchTokenKind(kind TokenKind) bool {
4141
}
4242

4343
// expectTokenKind consumes the last token if it is the given kind.
44-
func (p *Parser) expectTokenKind(kind TokenKind) (*Token, error) {
44+
func (p *Parser) expectTokenKind(kind TokenKind) error {
4545
if lastToken := p.tryConsumeTokenKind(kind); lastToken != nil {
46-
return lastToken, nil
46+
return nil
4747
}
48-
return nil, fmt.Errorf("expected the last token kind is: %s, but got %s", kind, p.lastTokenKind())
48+
return fmt.Errorf("expected the last token kind is: %s, but got %s", kind, p.lastTokenKind())
4949
}
5050

5151
func (p *Parser) tryConsumeTokenKind(kind TokenKind) *Token {
@@ -105,8 +105,8 @@ func (p *Parser) tryParseIdent() *Ident {
105105
}
106106

107107
func (p *Parser) parseIdent() (*Ident, error) {
108-
lastToken, err := p.expectTokenKind(TokenKindIdent)
109-
if err != nil {
108+
lastToken := p.last()
109+
if err := p.expectTokenKind(TokenKindIdent); err != nil {
110110
return nil, err
111111
}
112112
ident := &Ident{
@@ -229,18 +229,18 @@ func (p *Parser) parseDecimal(pos Pos) (*NumberLiteral, error) {
229229
}
230230

231231
func (p *Parser) parseNumber(pos Pos) (*NumberLiteral, error) {
232-
var lastToken *Token
233232
var err error
234233

234+
lastToken := p.last()
235235
switch {
236236
case p.matchTokenKind(TokenKindInt):
237-
lastToken, err = p.expectTokenKind(TokenKindInt)
237+
err = p.expectTokenKind(TokenKindInt)
238238
case p.matchTokenKind(TokenKindFloat):
239-
lastToken, err = p.expectTokenKind(TokenKindFloat)
239+
err = p.expectTokenKind(TokenKindFloat)
240240
case p.matchTokenKind(TokenKindDot):
241241
_ = p.lexer.consumeToken()
242-
lastToken, err = p.expectTokenKind(TokenKindInt)
243-
if err != nil {
242+
lastToken = p.last()
243+
if err := p.expectTokenKind(TokenKindInt); err != nil {
244244
return nil, err
245245
}
246246
if lastToken.Base != 10 {
@@ -264,10 +264,11 @@ func (p *Parser) parseNumber(pos Pos) (*NumberLiteral, error) {
264264
}
265265

266266
func (p *Parser) parseString(pos Pos) (*StringLiteral, error) {
267-
lastToken, err := p.expectTokenKind(TokenKindString)
268-
if err != nil {
267+
lastToken := p.last()
268+
if err := p.expectTokenKind(TokenKindString); err != nil {
269269
return nil, err
270270
}
271+
271272
str := &StringLiteral{
272273
LiteralPos: pos,
273274
LiteralEnd: lastToken.End,

0 commit comments

Comments
 (0)