Refactor block argument parsing.
@@ -310,6 +310,13 @@ func (p *Parser) parseCallExpression(receiver ast.Expression) ast.Expression {
// Parse block
if p.peekTokenIs(token.DO) {
+ p.parseBlockArgument(exp)
+ }
+
+ return exp
+}
+
+func (p *Parser) parseBlockArgument(exp *ast.CallExpression) {
p.nextToken()
// Parse block arguments
@@ -326,7 +333,7 @@ func (p *Parser) parseCallExpression(receiver ast.Expression) ast.Expression {
}
if !p.expectPeek(token.BAR) {
- return nil
+ return
}
exp.BlockArguments = args
@@ -335,9 +342,6 @@ func (p *Parser) parseCallExpression(receiver ast.Expression) ast.Expression {
exp.Block = p.parseBlockStatement()
}
- return exp
-}
-
func (p *Parser) parseCallArguments() []ast.Expression {
args := []ast.Expression{}
