From 20db0f428a28a529146b5016b97061f2b13c54d4 Mon Sep 17 00:00:00 2001 From: Robert Griesemer Date: Tue, 24 Sep 2013 16:35:35 -0700 Subject: [PATCH] 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 --- src/pkg/go/ast/ast.go | 1 + src/pkg/go/parser/parser.go | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) 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} -- 2.50.0