aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/compile/internal/syntax/parser.go
diff options
context:
space:
mode:
authorgriesemer <gri@golang.org>2017-10-16 17:17:40 -0700
committerRobert Griesemer <gri@golang.org>2017-10-17 01:04:56 +0000
commit0b2cb89196967030ae005076f0166ad7d6024083 (patch)
treec7f00d761381282ed66e125cf9fe0fcd99d1d9b6 /src/cmd/compile/internal/syntax/parser.go
parent38a3c2cfe95cef0e4f101cfb82c5586a9db4cbd8 (diff)
downloadgo-0b2cb89196967030ae005076f0166ad7d6024083.tar.xz
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>
Diffstat (limited to 'src/cmd/compile/internal/syntax/parser.go')
-rw-r--r--src/cmd/compile/internal/syntax/parser.go6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/cmd/compile/internal/syntax/parser.go b/src/cmd/compile/internal/syntax/parser.go
index cda2cf42da..3d14b70eba 100644
--- a/src/cmd/compile/internal/syntax/parser.go
+++ b/src/cmd/compile/internal/syntax/parser.go
@@ -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()
+ }
}
}