]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/compile/internal/syntax: match argument and parameter parsing (cleanup)
authorgriesemer <gri@golang.org>
Wed, 11 Oct 2017 22:02:10 +0000 (15:02 -0700)
committerRobert Griesemer <gri@golang.org>
Mon, 16 Oct 2017 17:18:32 +0000 (17:18 +0000)
No semantic change. Move functionality not related to argument
out of the argument parsing function, and thus match parameter
parsing. Also, use a better function name.

Change-Id: Ic550875251d64e6fe1ebf91c11d33a9e4aec9fdd
Reviewed-on: https://go-review.googlesource.com/70491
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
src/cmd/compile/internal/syntax/parser.go

index b967279089723e939fdbca10f016bfd3c626503d..c7c86be27fb9b21828c423d7f59806a085029901 100644 (file)
@@ -875,7 +875,11 @@ loop:
                        p.xnest--
 
                case _Lparen:
-                       x = p.call(x)
+                       t := new(CallExpr)
+                       t.pos = pos
+                       t.Fun = x
+                       t.ArgList, t.HasDots = p.argList()
+                       x = t
 
                case _Lbrace:
                        // operand may have returned a parenthesized complit
@@ -2062,24 +2066,18 @@ func (p *parser) stmtList() (l []Stmt) {
 }
 
 // Arguments = "(" [ ( ExpressionList | Type [ "," ExpressionList ] ) [ "..." ] [ "," ] ] ")" .
-func (p *parser) call(fun Expr) *CallExpr {
+func (p *parser) argList() (list []Expr, hasDots bool) {
        if trace {
-               defer p.trace("call")()
+               defer p.trace("argList")()
        }
 
-       // call or conversion
-       // convtype '(' expr ocomma ')'
-       c := new(CallExpr)
-       c.pos = p.pos()
-       c.Fun = fun
-
        p.want(_Lparen)
        p.xnest++
 
        for p.tok != _EOF && p.tok != _Rparen {
-               c.ArgList = append(c.ArgList, p.expr())
-               c.HasDots = p.got(_DotDotDot)
-               if !p.ocomma(_Rparen) || c.HasDots {
+               list = append(list, p.expr())
+               hasDots = p.got(_DotDotDot)
+               if !p.ocomma(_Rparen) || hasDots {
                        break
                }
        }
@@ -2087,7 +2085,7 @@ func (p *parser) call(fun Expr) *CallExpr {
        p.xnest--
        p.want(_Rparen)
 
-       return c
+       return
 }
 
 // ----------------------------------------------------------------------------