From: griesemer Date: Wed, 11 Oct 2017 22:02:10 +0000 (-0700) Subject: cmd/compile/internal/syntax: match argument and parameter parsing (cleanup) X-Git-Tag: go1.10beta1~702 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=f8f0d6c4deab0837b03ddccfe0edf775c3bbd49f;p=gostls13.git cmd/compile/internal/syntax: match argument and parameter parsing (cleanup) 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 --- diff --git a/src/cmd/compile/internal/syntax/parser.go b/src/cmd/compile/internal/syntax/parser.go index b967279089..c7c86be27f 100644 --- a/src/cmd/compile/internal/syntax/parser.go +++ b/src/cmd/compile/internal/syntax/parser.go @@ -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 } // ----------------------------------------------------------------------------