diff options
| author | griesemer <gri@golang.org> | 2017-10-16 18:01:47 -0700 |
|---|---|---|
| committer | Robert Griesemer <gri@golang.org> | 2017-10-17 03:24:52 +0000 |
| commit | 4fe43f814697a30b760c4a0a0e87688f6ad06ddc (patch) | |
| tree | 428192c854413e189c125053bf368cfc1f1aca86 /src/cmd/compile/internal/syntax/parser.go | |
| parent | 3be5d551801a97a76e236a2a53489b1c9c22e665 (diff) | |
| download | go-4fe43f814697a30b760c4a0a0e87688f6ad06ddc.tar.xz | |
cmd/compile/internal/parser: removed TODO (cleanup)
- checking for the correct closing token leads to slightly better
behavior for some randomly bogus programs
- removed `switch` in favor of an `if` statement
Follow-up on https://go-review.googlesource.com/c/go/+/71250.
Change-Id: I47f6c47b43baf790907f55ed97a947661687a9db
Reviewed-on: https://go-review.googlesource.com/71252
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
Diffstat (limited to 'src/cmd/compile/internal/syntax/parser.go')
| -rw-r--r-- | src/cmd/compile/internal/syntax/parser.go | 12 |
1 files changed, 3 insertions, 9 deletions
diff --git a/src/cmd/compile/internal/syntax/parser.go b/src/cmd/compile/internal/syntax/parser.go index 3d14b70eba..e2d5817dc8 100644 --- a/src/cmd/compile/internal/syntax/parser.go +++ b/src/cmd/compile/internal/syntax/parser.go @@ -368,17 +368,12 @@ func (p *parser) list(open, sep, close token, f func() bool) src.Pos { var done bool for p.tok != _EOF && p.tok != close && !done { done = f() - switch p.tok { - case sep: - p.next() - case _Rparen, _Rbrace: - // comma is optional before ) or } - nothing to do - // TODO(gri): consider restricting this case - // to the expected close token only - default: + // sep is optional before close + if !p.got(sep) && p.tok != close { p.syntax_error(fmt.Sprintf("expecting %s or %s", tokstring(sep), tokstring(close))) p.advance(_Rparen, _Rbrack, _Rbrace) if p.tok != close { + // position could be better but we had an error so we don't care return p.pos() } } @@ -386,7 +381,6 @@ func (p *parser) list(open, sep, close token, f func() bool) src.Pos { pos := p.pos() p.want(close) - return pos } |
