summaryrefslogtreecommitdiff
path: root/src/pkg/go
diff options
context:
space:
mode:
authorRobert Griesemer <gri@golang.org>2009-11-24 13:43:18 -0800
committerRobert Griesemer <gri@golang.org>2009-11-24 13:43:18 -0800
commit974bc55c8721b53b0c2c07baad59b86c08d07104 (patch)
tree2ae85bbcdecedd2a311365a9586e24a4e7cab1ba /src/pkg/go
parent3dd6b9b693f7580651de03546db8fd1805aa0cdf (diff)
downloadgolang-974bc55c8721b53b0c2c07baad59b86c08d07104.tar.gz
Change to container/vector interface:
- removed New(len int) in favor of new(Vector).Resize(len, cap) - removed Init(len int) in favor of Resize(len, cap) - runs all.bash Fixes issue 294. R=rsc, r, r1 http://codereview.appspot.com/157143
Diffstat (limited to 'src/pkg/go')
-rw-r--r--src/pkg/go/doc/doc.go6
-rw-r--r--src/pkg/go/parser/parser.go37
-rw-r--r--src/pkg/go/scanner/errors.go18
-rw-r--r--src/pkg/go/scanner/scanner_test.go2
4 files changed, 27 insertions, 36 deletions
diff --git a/src/pkg/go/doc/doc.go b/src/pkg/go/doc/doc.go
index c713ffc45..6b8cf87c8 100644
--- a/src/pkg/go/doc/doc.go
+++ b/src/pkg/go/doc/doc.go
@@ -46,10 +46,10 @@ type docReader struct {
func (doc *docReader) init(pkgName string) {
doc.pkgName = pkgName;
- doc.values = vector.New(0);
+ doc.values = new(vector.Vector);
doc.types = make(map[string]*typeDoc);
doc.funcs = make(map[string]*ast.FuncDecl);
- doc.bugs = vector.New(0);
+ doc.bugs = new(vector.Vector);
}
@@ -74,7 +74,7 @@ func (doc *docReader) lookupTypeDoc(name string) *typeDoc {
return tdoc
}
// type wasn't found - add one without declaration
- tdoc := &typeDoc{nil, vector.New(0), make(map[string]*ast.FuncDecl), make(map[string]*ast.FuncDecl)};
+ tdoc := &typeDoc{nil, new(vector.Vector), make(map[string]*ast.FuncDecl), make(map[string]*ast.FuncDecl)};
doc.types[name] = tdoc;
return tdoc;
}
diff --git a/src/pkg/go/parser/parser.go b/src/pkg/go/parser/parser.go
index 1195a24fa..f51d3fab7 100644
--- a/src/pkg/go/parser/parser.go
+++ b/src/pkg/go/parser/parser.go
@@ -76,7 +76,6 @@ func scannerMode(mode uint) uint {
func (p *parser) init(filename string, src []byte, mode uint) {
- p.ErrorVector.Init();
p.scanner.Init(filename, src, p, scannerMode(mode));
p.mode = mode;
p.trace = mode&Trace != 0; // for convenience (p.trace is used frequently)
@@ -164,7 +163,7 @@ func (p *parser) consumeComment() (comment *ast.Comment, endline int) {
// a comment group.
//
func (p *parser) consumeCommentGroup() int {
- list := vector.New(0);
+ list := new(vector.Vector);
endline := p.pos.Line;
for p.tok == token.COMMENT && endline+1 >= p.pos.Line {
var comment *ast.Comment;
@@ -309,7 +308,7 @@ func (p *parser) parseIdentList() []*ast.Ident {
defer un(trace(p, "IdentList"))
}
- list := vector.New(0);
+ list := new(vector.Vector);
list.Push(p.parseIdent());
for p.tok == token.COMMA {
p.next();
@@ -331,7 +330,7 @@ func (p *parser) parseExprList() []ast.Expr {
defer un(trace(p, "ExpressionList"))
}
- list := vector.New(0);
+ list := new(vector.Vector);
list.Push(p.parseExpr());
for p.tok == token.COMMA {
p.next();
@@ -436,7 +435,7 @@ func (p *parser) parseFieldDecl() *ast.Field {
doc := p.leadComment;
// a list of identifiers looks like a list of type names
- list := vector.New(0);
+ list := new(vector.Vector);
for {
// TODO(gri): do not allow ()'s here
list.Push(p.parseType());
@@ -483,7 +482,7 @@ func (p *parser) parseStructType() *ast.StructType {
pos := p.expect(token.STRUCT);
lbrace := p.expect(token.LBRACE);
- list := vector.New(0);
+ list := new(vector.Vector);
for p.tok == token.IDENT || p.tok == token.MUL {
f := p.parseFieldDecl();
if p.tok != token.RBRACE {
@@ -548,7 +547,7 @@ func (p *parser) parseParameterDecl(ellipsisOk bool) (*vector.Vector, ast.Expr)
}
// a list of identifiers looks like a list of type names
- list := vector.New(0);
+ list := new(vector.Vector);
for {
// TODO(gri): do not allow ()'s here
list.Push(p.parseParameterType(ellipsisOk));
@@ -575,7 +574,7 @@ func (p *parser) parseParameterList(ellipsisOk bool) []*ast.Field {
if typ != nil {
// IdentifierList Type
idents := p.makeIdentList(list);
- list.Init(0);
+ list.Resize(0, 0);
list.Push(&ast.Field{nil, idents, typ, nil, nil});
for p.tok == token.COMMA {
@@ -693,7 +692,7 @@ func (p *parser) parseInterfaceType() *ast.InterfaceType {
pos := p.expect(token.INTERFACE);
lbrace := p.expect(token.LBRACE);
- list := vector.New(0);
+ list := new(vector.Vector);
for p.tok == token.IDENT {
m := p.parseMethodSpec();
if p.tok != token.RBRACE {
@@ -805,7 +804,7 @@ func (p *parser) parseStmtList() []ast.Stmt {
defer un(trace(p, "StatementList"))
}
- list := vector.New(0);
+ list := new(vector.Vector);
expectSemi := false;
for p.tok != token.CASE && p.tok != token.DEFAULT && p.tok != token.RBRACE && p.tok != token.EOF {
if expectSemi {
@@ -850,7 +849,7 @@ func (p *parser) parseStringList(x *ast.BasicLit) []*ast.BasicLit {
defer un(trace(p, "StringList"))
}
- list := vector.New(0);
+ list := new(vector.Vector);
if x != nil {
list.Push(x)
}
@@ -1024,7 +1023,7 @@ func (p *parser) parseElementList() []ast.Expr {
defer un(trace(p, "ElementList"))
}
- list := vector.New(0);
+ list := new(vector.Vector);
for p.tok != token.RBRACE && p.tok != token.EOF {
list.Push(p.parseElement());
if p.tok == token.COMMA {
@@ -1464,7 +1463,7 @@ func (p *parser) parseTypeList() []ast.Expr {
defer un(trace(p, "TypeList"))
}
- list := vector.New(0);
+ list := new(vector.Vector);
list.Push(p.parseType());
for p.tok == token.COMMA {
p.next();
@@ -1533,7 +1532,7 @@ func (p *parser) parseSwitchStmt() ast.Stmt {
if isExprSwitch(s2) {
lbrace := p.expect(token.LBRACE);
- cases := vector.New(0);
+ cases := new(vector.Vector);
for p.tok == token.CASE || p.tok == token.DEFAULT {
cases.Push(p.parseCaseClause())
}
@@ -1546,7 +1545,7 @@ func (p *parser) parseSwitchStmt() ast.Stmt {
// type switch
// TODO(gri): do all the checks!
lbrace := p.expect(token.LBRACE);
- cases := vector.New(0);
+ cases := new(vector.Vector);
for p.tok == token.CASE || p.tok == token.DEFAULT {
cases.Push(p.parseTypeCaseClause())
}
@@ -1608,7 +1607,7 @@ func (p *parser) parseSelectStmt() *ast.SelectStmt {
pos := p.expect(token.SELECT);
lbrace := p.expect(token.LBRACE);
- cases := vector.New(0);
+ cases := new(vector.Vector);
for p.tok == token.CASE || p.tok == token.DEFAULT {
cases.Push(p.parseCommClause())
}
@@ -1818,7 +1817,7 @@ func (p *parser) parseGenDecl(keyword token.Token, f parseSpecFunction, getSemi
doc := p.leadComment;
pos := p.expect(keyword);
var lparen, rparen token.Position;
- list := vector.New(0);
+ list := new(vector.Vector);
if p.tok == token.LPAREN {
lparen = p.pos;
p.next();
@@ -1947,7 +1946,7 @@ func (p *parser) parseDeclList() []ast.Decl {
defer un(trace(p, "DeclList"))
}
- list := vector.New(0);
+ list := new(vector.Vector);
for p.tok != token.EOF {
decl, _ := p.parseDecl(true); // consume optional semicolon
list.Push(decl);
@@ -1985,7 +1984,7 @@ func (p *parser) parseFile() *ast.File {
if p.ErrorCount() == 0 && p.mode&PackageClauseOnly == 0 {
// import decls
- list := vector.New(0);
+ list := new(vector.Vector);
for p.tok == token.IMPORT {
decl, _ := p.parseGenDecl(token.IMPORT, parseImportSpec, true); // consume optional semicolon
list.Push(decl);
diff --git a/src/pkg/go/scanner/errors.go b/src/pkg/go/scanner/errors.go
index 16ad53260..12c1c852f 100644
--- a/src/pkg/go/scanner/errors.go
+++ b/src/pkg/go/scanner/errors.go
@@ -24,9 +24,9 @@ type ErrorHandler interface {
}
-// ErrorVector implements the ErrorHandler interface. It must be
-// initialized with Init(). It maintains a list of errors which can
-// be retrieved with GetErrorList and GetError.
+// ErrorVector implements the ErrorHandler interface. It maintains a list
+// of errors which can be retrieved with GetErrorList and GetError. The
+// zero value for an ErrorVector is an empty ErrorVector ready to use.
//
// A common usage pattern is to embed an ErrorVector alongside a
// scanner in a data structure that uses the scanner. By passing a
@@ -38,16 +38,8 @@ type ErrorVector struct {
}
-// Init initializes an ErrorVector.
-func (h *ErrorVector) Init() { h.errors.Init(0) }
-
-
-// NewErrorVector creates a new ErrorVector.
-func NewErrorVector() *ErrorVector {
- h := new(ErrorVector);
- h.Init();
- return h;
-}
+// Reset resets an ErrorVector to no errors.
+func (h *ErrorVector) Reset() { h.errors.Resize(0, 0) }
// ErrorCount returns the number of errors collected.
diff --git a/src/pkg/go/scanner/scanner_test.go b/src/pkg/go/scanner/scanner_test.go
index be1b44ec7..5ce7bd9be 100644
--- a/src/pkg/go/scanner/scanner_test.go
+++ b/src/pkg/go/scanner/scanner_test.go
@@ -355,7 +355,7 @@ func TestStdErrorHander(t *testing.T) {
"@ @ @"; // original file, line 1 again
- v := NewErrorVector();
+ v := new(ErrorVector);
nerrors := Tokenize("File1", strings.Bytes(src), v, 0,
func(pos token.Position, tok token.Token, litb []byte) bool {
return tok != token.EOF