diff options
Diffstat (limited to 'parse.go')
-rw-r--r-- | parse.go | 16 |
1 files changed, 12 insertions, 4 deletions
@@ -1267,7 +1267,8 @@ func parseCall(toks *tokens) (*callExpr, error) { return nil, nil } - args, err := parseArg(toks) + numArgs := 0 + args, err := parseArg(toks, &numArgs) if err != nil { return nil, err } @@ -1276,10 +1277,15 @@ func parseCall(toks *tokens) (*callExpr, error) { return nil, err } - return &callExpr{funcName: nameTok.value, args: args, ln: nameTok.line}, nil + return &callExpr{ + funcName: nameTok.value, + args: args, + numArgs: numArgs, + ln: nameTok.line, + }, nil } -func parseArg(toks *tokens) (*argument, error) { +func parseArg(toks *tokens, numTotal *int) (*argument, error) { ok, err := toks.match(rparen) if err != nil { return nil, err @@ -1300,14 +1306,16 @@ func parseArg(toks *tokens) (*argument, error) { } if !ok { toks.unreadToken() + *numTotal++ return &argument{value: arg}, nil } - next, err := parseArg(toks) + next, err := parseArg(toks, numTotal) if err != nil { return nil, err } + *numTotal++ return &argument{value: arg, next: next}, nil } |