]> Cypherpunks repositories - gostls13.git/commitdiff
go/parser: accept optional indices for all parts of an index expression
authorRobert Griesemer <gri@golang.org>
Wed, 3 Jul 2013 17:43:24 +0000 (10:43 -0700)
committerRobert Griesemer <gri@golang.org>
Wed, 3 Jul 2013 17:43:24 +0000 (10:43 -0700)
Instead, leave the error testing to the type checker, eventually.

Fixes #5827.

R=adonovan
CC=golang-dev
https://golang.org/cl/10917043

src/pkg/go/parser/parser.go
src/pkg/go/parser/short_test.go

index 721ab58570886cff64df443b2ea647236dfd32de..ded733489bd6c218227187b796f698d8211d0de6 100644 (file)
@@ -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}
        }
 
index 57bb78c533c6974a68577e32757646371cc5d7e6..a15b3ed35c29ee2fae1c7d359419d69ef49881c8 100644 (file)
@@ -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) {