diff options
-rw-r--r-- | src/go/parser/parser.go | 2 | ||||
-rw-r--r-- | src/go/parser/short_test.go | 1 |
2 files changed, 3 insertions, 0 deletions
diff --git a/src/go/parser/parser.go b/src/go/parser/parser.go index 9c62076f2..4a005d8ff 100644 --- a/src/go/parser/parser.go +++ b/src/go/parser/parser.go @@ -641,6 +641,7 @@ func (p *parser) parseArrayType() ast.Expr { } lbrack := p.expect(token.LBRACK) + p.exprLev++ var len ast.Expr // always permit ellipsis for more fault-tolerant parsing if p.tok == token.ELLIPSIS { @@ -649,6 +650,7 @@ func (p *parser) parseArrayType() ast.Expr { } else if p.tok != token.RBRACK { len = p.parseRhs() } + p.exprLev-- p.expect(token.RBRACK) elt := p.parseType() diff --git a/src/go/parser/short_test.go b/src/go/parser/short_test.go index f861086dd..05e44de28 100644 --- a/src/go/parser/short_test.go +++ b/src/go/parser/short_test.go @@ -39,6 +39,7 @@ var valids = []string{ `package p; func ((*T),) m() {}`, `package p; func (*(T),) m() {}`, `package p; func _(x []int) { for range x {} }`, + `package p; func _() { if [T{}.n]int{} {} }`, } func TestValid(t *testing.T) { |