Commit 4fe43f81 authored by griesemer's avatar griesemer Committed by Robert Griesemer

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/71252Reviewed-by: default avatarMatthew Dempsky <mdempsky@google.com>
parent 3be5d551
...@@ -368,17 +368,12 @@ func (p *parser) list(open, sep, close token, f func() bool) src.Pos { ...@@ -368,17 +368,12 @@ func (p *parser) list(open, sep, close token, f func() bool) src.Pos {
var done bool var done bool
for p.tok != _EOF && p.tok != close && !done { for p.tok != _EOF && p.tok != close && !done {
done = f() done = f()
switch p.tok { // sep is optional before close
case sep: if !p.got(sep) && p.tok != close {
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:
p.syntax_error(fmt.Sprintf("expecting %s or %s", tokstring(sep), tokstring(close))) p.syntax_error(fmt.Sprintf("expecting %s or %s", tokstring(sep), tokstring(close)))
p.advance(_Rparen, _Rbrack, _Rbrace) p.advance(_Rparen, _Rbrack, _Rbrace)
if p.tok != close { if p.tok != close {
// position could be better but we had an error so we don't care
return p.pos() return p.pos()
} }
} }
...@@ -386,7 +381,6 @@ func (p *parser) list(open, sep, close token, f func() bool) src.Pos { ...@@ -386,7 +381,6 @@ func (p *parser) list(open, sep, close token, f func() bool) src.Pos {
pos := p.pos() pos := p.pos()
p.want(close) p.want(close)
return pos return pos
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment