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: 's avatarMatthew Dempsky <mdempsky@google.com>
parent 3be5d551
......@@ -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
}
......
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