cmd/compile/internal/syntax: better recovery after missing closing parentheses

Fine-tune skipping of tokens after missing closing parentheses in lists.

Fixes #22164.

Change-Id: I575d86e21048cd40340a2c08399e8b0deec337cf
Reviewed-on: https://go-review.googlesource.com/71250
Run-TryBot: Robert Griesemer <gri@golang.org>
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
This commit is contained in:
griesemer 2017-10-16 17:17:40 -07:00 committed by Robert Griesemer
parent 38a3c2cfe9
commit 0b2cb89196
2 changed files with 30 additions and 2 deletions

View file

@ -377,8 +377,10 @@ func (p *parser) list(open, sep, close token, f func() bool) src.Pos {
// to the expected close token only
default:
p.syntax_error(fmt.Sprintf("expecting %s or %s", tokstring(sep), tokstring(close)))
p.advance(close)
done = true
p.advance(_Rparen, _Rbrack, _Rbrace)
if p.tok != close {
return p.pos()
}
}
}