diff options
| author | Robert Griesemer <gri@golang.org> | 2016-10-31 16:58:15 -0700 |
|---|---|---|
| committer | Robert Griesemer <gri@golang.org> | 2016-11-01 05:18:47 +0000 |
| commit | 7a26d9fcedd94a1ba0d95833b0cdbbdcc776fe19 (patch) | |
| tree | 313c90278a6268c3f1b20eb4e6fe87ef8e086caf /src/cmd/compile/internal/syntax/parser.go | |
| parent | 53fc330e2d154443acf3d01e0d68bae22b2b7804 (diff) | |
| download | go-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.go | 4 |
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 |
