Commit f8f0d6c4 authored by griesemer's avatar griesemer Committed by Robert Griesemer

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/70491Reviewed-by: 's avatarMatthew Dempsky <mdempsky@google.com>
parent 4b7325c7
...@@ -875,7 +875,11 @@ loop: ...@@ -875,7 +875,11 @@ loop:
p.xnest-- p.xnest--
case _Lparen: 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: case _Lbrace:
// operand may have returned a parenthesized complit // operand may have returned a parenthesized complit
...@@ -2062,24 +2066,18 @@ func (p *parser) stmtList() (l []Stmt) { ...@@ -2062,24 +2066,18 @@ func (p *parser) stmtList() (l []Stmt) {
} }
// Arguments = "(" [ ( ExpressionList | Type [ "," ExpressionList ] ) [ "..." ] [ "," ] ] ")" . // Arguments = "(" [ ( ExpressionList | Type [ "," ExpressionList ] ) [ "..." ] [ "," ] ] ")" .
func (p *parser) call(fun Expr) *CallExpr { func (p *parser) argList() (list []Expr, hasDots bool) {
if trace { 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.want(_Lparen)
p.xnest++ p.xnest++
for p.tok != _EOF && p.tok != _Rparen { for p.tok != _EOF && p.tok != _Rparen {
c.ArgList = append(c.ArgList, p.expr()) list = append(list, p.expr())
c.HasDots = p.got(_DotDotDot) hasDots = p.got(_DotDotDot)
if !p.ocomma(_Rparen) || c.HasDots { if !p.ocomma(_Rparen) || hasDots {
break break
} }
} }
...@@ -2087,7 +2085,7 @@ func (p *parser) call(fun Expr) *CallExpr { ...@@ -2087,7 +2085,7 @@ func (p *parser) call(fun Expr) *CallExpr {
p.xnest-- p.xnest--
p.want(_Rparen) p.want(_Rparen)
return c return
} }
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment