Skip to content

Commit

Permalink
go/parser: fix ignored errors in ParseExprFrom
Browse files Browse the repository at this point in the history
This CL fixes a bug in ParseExprFrom which makes
error messages ignored when there are 10+ errors
in a single expression.

fixes #34241
fixes #34274

Change-Id: I29a82d3e3e726279005eb6fbcd7ee3aebffaa679
Reviewed-on: https://go-review.googlesource.com/c/go/+/194638
Run-TryBot: Ben Shi <[email protected]>
TryBot-Result: Gobot Gobot <[email protected]>
Reviewed-by: Robert Griesemer <[email protected]>
  • Loading branch information
benshi001 authored and griesemer committed Sep 15, 2019
1 parent 4e21555 commit d12c62d
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 1 deletion.
2 changes: 1 addition & 1 deletion src/go/parser/interface.go
Original file line number Diff line number Diff line change
Expand Up @@ -173,7 +173,7 @@ func ParseDir(fset *token.FileSet, path string, filter func(os.FileInfo) bool, m
// be a valid Go (type or value) expression. Specifically, fset must not
// be nil.
//
func ParseExprFrom(fset *token.FileSet, filename string, src interface{}, mode Mode) (ast.Expr, error) {
func ParseExprFrom(fset *token.FileSet, filename string, src interface{}, mode Mode) (expr ast.Expr, err error) {
if fset == nil {
panic("parser.ParseExprFrom: no token.FileSet provided (fset == nil)")
}
Expand Down
16 changes: 16 additions & 0 deletions src/go/parser/parser_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,22 @@ func nameFilter(filename string) bool {

func dirFilter(f os.FileInfo) bool { return nameFilter(f.Name()) }

func TestParseFile(t *testing.T) {
src := "package p\nvar _=s[::]+\ns[::]+\ns[::]+\ns[::]+\ns[::]+\ns[::]+\ns[::]+\ns[::]+\ns[::]+\ns[::]+\ns[::]+\ns[::]"
_, err := ParseFile(token.NewFileSet(), "", src, 0)
if err == nil {
t.Errorf("ParseFile(%s) succeeded unexpectedly", src)
}
}

func TestParseExprFrom(t *testing.T) {
src := "s[::]+\ns[::]+\ns[::]+\ns[::]+\ns[::]+\ns[::]+\ns[::]+\ns[::]+\ns[::]+\ns[::]+\ns[::]+\ns[::]"
_, err := ParseExprFrom(token.NewFileSet(), "", src, 0)
if err == nil {
t.Errorf("ParseExprFrom(%s) succeeded unexpectedly", src)
}
}

func TestParseDir(t *testing.T) {
path := "."
pkgs, err := ParseDir(token.NewFileSet(), path, dirFilter, 0)
Expand Down

0 comments on commit d12c62d

Please sign in to comment.