summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/go/parser/parser.go2
-rw-r--r--src/go/parser/short_test.go1
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) {