Skip to content

Commit d12c62d

Browse files
benshi001griesemer
authored andcommitted
go/parser: fix ignored errors in ParseExprFrom
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]>
1 parent 4e21555 commit d12c62d

File tree

2 files changed

+17
-1
lines changed

2 files changed

+17
-1
lines changed

src/go/parser/interface.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -173,7 +173,7 @@ func ParseDir(fset *token.FileSet, path string, filter func(os.FileInfo) bool, m
173173
// be a valid Go (type or value) expression. Specifically, fset must not
174174
// be nil.
175175
//
176-
func ParseExprFrom(fset *token.FileSet, filename string, src interface{}, mode Mode) (ast.Expr, error) {
176+
func ParseExprFrom(fset *token.FileSet, filename string, src interface{}, mode Mode) (expr ast.Expr, err error) {
177177
if fset == nil {
178178
panic("parser.ParseExprFrom: no token.FileSet provided (fset == nil)")
179179
}

src/go/parser/parser_test.go

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,22 @@ func nameFilter(filename string) bool {
4242

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

45+
func TestParseFile(t *testing.T) {
46+
src := "package p\nvar _=s[::]+\ns[::]+\ns[::]+\ns[::]+\ns[::]+\ns[::]+\ns[::]+\ns[::]+\ns[::]+\ns[::]+\ns[::]+\ns[::]"
47+
_, err := ParseFile(token.NewFileSet(), "", src, 0)
48+
if err == nil {
49+
t.Errorf("ParseFile(%s) succeeded unexpectedly", src)
50+
}
51+
}
52+
53+
func TestParseExprFrom(t *testing.T) {
54+
src := "s[::]+\ns[::]+\ns[::]+\ns[::]+\ns[::]+\ns[::]+\ns[::]+\ns[::]+\ns[::]+\ns[::]+\ns[::]+\ns[::]"
55+
_, err := ParseExprFrom(token.NewFileSet(), "", src, 0)
56+
if err == nil {
57+
t.Errorf("ParseExprFrom(%s) succeeded unexpectedly", src)
58+
}
59+
}
60+
4561
func TestParseDir(t *testing.T) {
4662
path := "."
4763
pkgs, err := ParseDir(token.NewFileSet(), path, dirFilter, 0)

0 commit comments

Comments
 (0)