From: Sebastien Binet Date: Mon, 27 Dec 2010 18:05:32 +0000 (-0800) Subject: simple fix to not have 'exp/eval' panic in presence of slices like s[:2] X-Git-Tag: weekly.2011-01-06~38 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=33145c48682523177ac1cf62ee6b86eed680fffa;p=gostls13.git simple fix to not have 'exp/eval' panic in presence of slices like s[:2] R=golang-dev, gri CC=binet, golang-dev https://golang.org/cl/3782044 --- diff --git a/src/pkg/exp/eval/expr.go b/src/pkg/exp/eval/expr.go index 66adeef957..f633aea390 100644 --- a/src/pkg/exp/eval/expr.go +++ b/src/pkg/exp/eval/expr.go @@ -595,9 +595,15 @@ func (a *exprCompiler) compile(x ast.Expr, callCtx bool) *expr { return ei.compileIndexExpr(l, r) case *ast.SliceExpr: - var hi *expr + var lo, hi *expr arr := a.compile(x.X, false) - lo := a.compile(x.Index, false) + if x.Index == nil { + // beginning was omitted, so we need to provide it + ei := &exprInfo{a.compiler, x.Pos()} + lo = ei.compileIntLit("0") + } else { + lo = a.compile(x.Index, false) + } if x.End == nil { // End was omitted, so we need to compute len(x.X) ei := &exprInfo{a.compiler, x.Pos()}