aboutsummaryrefslogtreecommitdiff
path: root/syntax
diff options
context:
space:
mode:
authoralandonovan <adonovan@google.com>2018-12-09 21:18:13 -0500
committerGitHub <noreply@github.com>2018-12-09 21:18:13 -0500
commit97d7763a639cf6b26017b93839f05f8354c28695 (patch)
treeff278fd21e57002dd3bb8a5323b1f496bbadbd73 /syntax
parent6be536f2cdd8f0f7c667a7e81c310f3eba95948a (diff)
downloadstarlark-go-97d7763a639cf6b26017b93839f05f8354c28695.tar.gz
syntax: fix bug in parser (#58)
(introduced in 6be536f) Also factor similar *args/*kwargs parsing in the same way.
Diffstat (limited to 'syntax')
-rw-r--r--syntax/parse.go23
1 files changed, 6 insertions, 17 deletions
diff --git a/syntax/parse.go b/syntax/parse.go
index f329cef..82c6ab0 100644
--- a/syntax/parse.go
+++ b/syntax/parse.go
@@ -409,11 +409,12 @@ func (p *parser) parseParams() []Expr {
// *args or **kwargs
if p.tok == STAR || p.tok == STARSTAR {
stars = true
+ op := p.tok
pos := p.nextToken()
id := p.parseIdent()
params = append(params, &UnaryExpr{
OpPos: pos,
- Op: p.tok,
+ Op: op,
X: id,
})
continue
@@ -703,27 +704,15 @@ func (p *parser) parseArgs() []Expr {
break
}
- // *args
- if p.tok == STAR {
- stars = true
- pos := p.nextToken()
- x := p.parseTest()
- args = append(args, &UnaryExpr{
- OpPos: pos,
- Op: STAR,
- X: x,
- })
- continue
- }
-
- // **kwargs
- if p.tok == STARSTAR {
+ // *args or **kwargs
+ if p.tok == STAR || p.tok == STARSTAR {
stars = true
+ op := p.tok
pos := p.nextToken()
x := p.parseTest()
args = append(args, &UnaryExpr{
OpPos: pos,
- Op: STARSTAR,
+ Op: op,
X: x,
})
continue