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:
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
}
// ----------------------------------------------------------------------------
......
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