From: Robert Griesemer Date: Tue, 24 Sep 2013 23:35:35 +0000 (-0700) Subject: go/ast: add Slice3 field to SliceExpr X-Git-Tag: go1.2rc2~121 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=20db0f428a28a529146b5016b97061f2b13c54d4;p=gostls13.git go/ast: add Slice3 field to SliceExpr If Slice3 is set, the expression is a 3-index slice expression (2 colons). Required for type-checking. Backward-compatible API extension. R=r, rsc CC=golang-dev https://golang.org/cl/13826050 --- diff --git a/src/pkg/go/ast/ast.go b/src/pkg/go/ast/ast.go index a6ce674e74..6e635cd016 100644 --- a/src/pkg/go/ast/ast.go +++ b/src/pkg/go/ast/ast.go @@ -298,6 +298,7 @@ type ( Low Expr // begin of slice range; or nil High Expr // end of slice range; or nil Max Expr // maximum capacity of slice; or nil + Slice3 bool // true if 3-index slice (2 colons present) Rbrack token.Pos // position of "]" } diff --git a/src/pkg/go/parser/parser.go b/src/pkg/go/parser/parser.go index c3245e375d..c4523318f2 100644 --- a/src/pkg/go/parser/parser.go +++ b/src/pkg/go/parser/parser.go @@ -1187,7 +1187,7 @@ func (p *parser) parseIndexOrSlice(x ast.Expr) ast.Expr { if ncolons > 0 { // slice expression - return &ast.SliceExpr{X: x, Lbrack: lbrack, Low: index[0], High: index[1], Max: index[2], Rbrack: rbrack} + return &ast.SliceExpr{X: x, Lbrack: lbrack, Low: index[0], High: index[1], Max: index[2], Slice3: ncolons == 2, Rbrack: rbrack} } return &ast.IndexExpr{X: x, Lbrack: lbrack, Index: index[0], Rbrack: rbrack}