aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/compile/internal/syntax/parser.go
diff options
context:
space:
mode:
authorRobert Griesemer <gri@golang.org>2016-10-31 16:58:15 -0700
committerRobert Griesemer <gri@golang.org>2016-11-01 05:18:47 +0000
commit7a26d9fcedd94a1ba0d95833b0cdbbdcc776fe19 (patch)
tree313c90278a6268c3f1b20eb4e6fe87ef8e086caf /src/cmd/compile/internal/syntax/parser.go
parent53fc330e2d154443acf3d01e0d68bae22b2b7804 (diff)
downloadgo-7a26d9fcedd94a1ba0d95833b0cdbbdcc776fe19.tar.xz
cmd/compile/internal/syntax: don't panic if no error handler is provided
If no error handler is provided, terminate parsing with first error and report that error. Fixes #17697. Change-Id: I9070faf7239bd53725de141507912b92ded3474b Reviewed-on: https://go-review.googlesource.com/32456 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.go4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/cmd/compile/internal/syntax/parser.go b/src/cmd/compile/internal/syntax/parser.go
index fcf4f5b692..1ed20651b1 100644
--- a/src/cmd/compile/internal/syntax/parser.go
+++ b/src/cmd/compile/internal/syntax/parser.go
@@ -28,6 +28,8 @@ type parser struct {
nerrors int // error count
}
+type parserError string // for error recovery if no error handler was installed
+
func (p *parser) init(src io.Reader, errh ErrorHandler, pragh PragmaHandler) {
p.scanner.init(src, func(pos, line int, msg string) {
p.nerrors++
@@ -35,7 +37,7 @@ func (p *parser) init(src io.Reader, errh ErrorHandler, pragh PragmaHandler) {
errh(pos, line, msg)
return
}
- panic(fmt.Sprintf("%d: %s\n", line, msg))
+ panic(parserError(fmt.Sprintf("%d: %s\n", line, msg)))
}, pragh)
p.fnest = 0