From: Robert Griesemer Date: Wed, 3 Jul 2013 17:43:24 +0000 (-0700) Subject: go/parser: accept optional indices for all parts of an index expression X-Git-Tag: go1.2rc2~1111 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=dd1fe82cecd530de2ddee961d5d3cb1d6f95f851;p=gostls13.git go/parser: accept optional indices for all parts of an index expression Instead, leave the error testing to the type checker, eventually. Fixes #5827. R=adonovan CC=golang-dev https://golang.org/cl/10917043 --- diff --git a/src/pkg/go/parser/parser.go b/src/pkg/go/parser/parser.go index 721ab58570..ded733489b 100644 --- a/src/pkg/go/parser/parser.go +++ b/src/pkg/go/parser/parser.go @@ -1187,10 +1187,6 @@ func (p *parser) parseIndexOrSlice(x ast.Expr) ast.Expr { if ncolons > 0 { // slice expression - if ncolons == 2 && (index[1] == nil || index[2] == nil) { - // only i is optional in a[i:j:k] - p.error(rbrack, "2nd and 3rd index must be present full slice expression") - } return &ast.SliceExpr{X: x, Lbrack: lbrack, Low: index[0], High: index[1], Max: index[2], Rbrack: rbrack} } diff --git a/src/pkg/go/parser/short_test.go b/src/pkg/go/parser/short_test.go index 57bb78c533..a15b3ed35c 100644 --- a/src/pkg/go/parser/short_test.go +++ b/src/pkg/go/parser/short_test.go @@ -78,12 +78,6 @@ var invalids = []string{ `package p; func f() { var s []int; _ = s[] /* ERROR "expected operand" */ };`, `package p; func f() { var s []int; _ = s[::: /* ERROR "expected ']'" */ ] };`, `package p; func f() { var s []int; _ = s[i:j:k: /* ERROR "expected ']'" */ l] };`, - `package p; func f() { var s []int; g(s[::] /* ERROR "index must be present" */) };`, - `package p; func f() { var s []int; g(s[i::] /* ERROR "index must be present" */) };`, - `package p; func f() { var s []int; g(s[i:j:] /* ERROR "index must be present" */) };`, - `package p; func f() { var s []int; g(s[::k] /* ERROR "index must be present" */) };`, - `package p; func f() { var s []int; g(s[:j:] /* ERROR "index must be present" */) };`, - `package p; func f() { var s []int; g(s[i::k] /* ERROR "index must be present" */) };`, } func TestInvalid(t *testing.T) {