From: Robert Griesemer Date: Sun, 29 Nov 2009 22:11:52 +0000 (-0800) Subject: Correct expression level for argument lists. X-Git-Tag: weekly.2009-12-07~121 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=f3e0f214f8a6c83e1c0abd9eac407b5309a252ba;p=gostls13.git Correct expression level for argument lists. Fixes #352. R=rsc https://golang.org/cl/161073 --- diff --git a/src/pkg/go/parser/parser.go b/src/pkg/go/parser/parser.go index 8af1b801e0..65b275fc88 100644 --- a/src/pkg/go/parser/parser.go +++ b/src/pkg/go/parser/parser.go @@ -992,10 +992,12 @@ func (p *parser) parseCallOrConversion(fun ast.Expr) *ast.CallExpr { } lparen := p.expect(token.LPAREN); + p.exprLev++; var args []ast.Expr; if p.tok != token.RPAREN { args = p.parseExprList() } + p.exprLev--; rparen := p.expect(token.RPAREN); return &ast.CallExpr{fun, lparen, args, rparen}; diff --git a/src/pkg/go/parser/parser_test.go b/src/pkg/go/parser/parser_test.go index 10a750c59e..2aa1d43666 100644 --- a/src/pkg/go/parser/parser_test.go +++ b/src/pkg/go/parser/parser_test.go @@ -31,6 +31,7 @@ func TestParseIllegalInputs(t *testing.T) { var validPrograms = []interface{}{ `package main`, `package main import "fmt" func main() { fmt.Println("Hello, World!") }`, + `package main func main() { if f(T{}) {} }`, }