From 9e8e4a9313f8bff5c40d82166818f98b4a8cc9ed Mon Sep 17 00:00:00 2001 From: Robert Griesemer <gri@golang.org> Date: Wed, 7 Mar 2012 10:19:32 -0800 Subject: [PATCH] go/parser: better error sync. if commas are missing This time for sure. Runs all tests. R=golang-dev, rsc CC=golang-dev https://golang.org/cl/5752060 --- src/pkg/go/parser/parser.go | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/src/pkg/go/parser/parser.go b/src/pkg/go/parser/parser.go index 4a391454ae..c39ea5c2a3 100644 --- a/src/pkg/go/parser/parser.go +++ b/src/pkg/go/parser/parser.go @@ -376,17 +376,15 @@ func (p *parser) expectSemi() { } } -func (p *parser) seesComma(context string) bool { +func (p *parser) atComma(context string) bool { if p.tok == token.COMMA { return true } - /* - if p.tok == token.SEMICOLON && p.lit == "\n" { - p.error(p.pos, "missing ',' before newline in "+context) - return true // "insert" the comma and continue + if p.tok == token.SEMICOLON && p.lit == "\n" { + p.error(p.pos, "missing ',' before newline in "+context) + return true // "insert" the comma and continue - } - */ + } return false } @@ -661,7 +659,7 @@ func (p *parser) parseVarList(isParam bool) (list []ast.Expr, typ ast.Expr) { // accept them all for more robust parsing and complain later for typ := p.parseVarType(isParam); typ != nil; { list = append(list, typ) - if !p.seesComma("variable list") { + if p.tok != token.COMMA { break } p.next() @@ -702,7 +700,7 @@ func (p *parser) parseParameterList(scope *ast.Scope, ellipsisOk bool) (params [ // Go spec: The scope of an identifier denoting a function // parameter or result variable is the function body. p.declare(field, nil, scope, ast.Var, idents...) - if !p.seesComma("parameter list") { + if !p.atComma("parameter list") { break } p.next() @@ -1092,7 +1090,7 @@ func (p *parser) parseCallOrConversion(fun ast.Expr) *ast.CallExpr { ellipsis = p.pos p.next() } - if !p.seesComma("argument list") { + if !p.atComma("argument list") { break } p.next() @@ -1132,7 +1130,7 @@ func (p *parser) parseElementList() (list []ast.Expr) { for p.tok != token.RBRACE && p.tok != token.EOF { list = append(list, p.parseElement(true)) - if !p.seesComma("composite literal") { + if !p.atComma("composite literal") { break } p.next() -- 2.30.9