aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Griesemer <gri@golang.org>2012-01-19 13:54:31 -0800
committerRobert Griesemer <gri@golang.org>2012-01-19 13:54:31 -0800
commit7b07310a698bec952fa5f1b9ca64cc92c5de6f0e (patch)
tree864326b1b16fde2afd332a98b7b082ec15c93cdb
parentc837e612bd449cd7298ce925749b9f09b54fea48 (diff)
downloadgo-7b07310a698bec952fa5f1b9ca64cc92c5de6f0e.tar.gz
go-7b07310a698bec952fa5f1b9ca64cc92c5de6f0e.zip
go/parser: expressions may have comments
Thanks to 0xE2.0x9A.0x9B for the patch suggestion. Fixes #2739. R=r CC=golang-dev https://golang.org/cl/5536071
-rw-r--r--src/pkg/go/parser/interface.go6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/pkg/go/parser/interface.go b/src/pkg/go/parser/interface.go
index 2ce3df8df7..4b72f38518 100644
--- a/src/pkg/go/parser/interface.go
+++ b/src/pkg/go/parser/interface.go
@@ -135,8 +135,10 @@ func ParseDir(fset *token.FileSet, path string, filter func(os.FileInfo) bool, m
//
func ParseExpr(x string) (ast.Expr, error) {
// parse x within the context of a complete package for correct scopes;
- // use //line directive for correct positions in error messages
- file, err := ParseFile(token.NewFileSet(), "", "package p;func _(){_=\n//line :1\n"+x+";}", 0)
+ // use //line directive for correct positions in error messages and put
+ // x alone on a separate line (handles line comments), followed by a ';'
+ // to force an error if the expression is incomplete
+ file, err := ParseFile(token.NewFileSet(), "", "package p;func _(){_=\n//line :1\n"+x+"\n;}", 0)
if err != nil {
return nil, err
}