diff options
author | Robert Griesemer <gri@golang.org> | 2013-04-03 07:41:26 -0700 |
---|---|---|
committer | Robert Griesemer <gri@golang.org> | 2013-04-03 07:41:26 -0700 |
commit | 38c90a2aa61fad78c8203040cd0f24f1a40959ee (patch) | |
tree | e25fd7b31251db3e361fc2a08b718d2f4e8868e7 /src/cmd/gofmt | |
parent | d64d0038ee608dd7b7a6251b72e816882acb8cff (diff) | |
download | go-38c90a2aa61fad78c8203040cd0f24f1a40959ee.tar.gz |
go/parser: ParseExpr must accept type expressions
My old code was trying to be too smart.
Also: Slightly better error message format
for gofmt -r pattern errors.
Fixes issue 4406.
R=golang-dev, adg
CC=golang-dev
https://codereview.appspot.com/8267045
Diffstat (limited to 'src/cmd/gofmt')
-rw-r--r-- | src/cmd/gofmt/gofmt_test.go | 1 | ||||
-rw-r--r-- | src/cmd/gofmt/rewrite.go | 4 | ||||
-rw-r--r-- | src/cmd/gofmt/testdata/rewrite8.golden | 10 | ||||
-rw-r--r-- | src/cmd/gofmt/testdata/rewrite8.input | 10 |
4 files changed, 23 insertions, 2 deletions
diff --git a/src/cmd/gofmt/gofmt_test.go b/src/cmd/gofmt/gofmt_test.go index 8ff00a253..75a322a6c 100644 --- a/src/cmd/gofmt/gofmt_test.go +++ b/src/cmd/gofmt/gofmt_test.go @@ -84,6 +84,7 @@ var tests = []struct { {"testdata/rewrite5.input", "-r=x+x->2*x"}, {"testdata/rewrite6.input", "-r=fun(x)->Fun(x)"}, {"testdata/rewrite7.input", "-r=fun(x...)->Fun(x)"}, + {"testdata/rewrite8.input", "-r=interface{}->int"}, {"testdata/stdin*.input", "-stdin"}, {"testdata/comments.input", ""}, {"testdata/import.input", ""}, diff --git a/src/cmd/gofmt/rewrite.go b/src/cmd/gofmt/rewrite.go index 1aa1f6ed0..66d2331a5 100644 --- a/src/cmd/gofmt/rewrite.go +++ b/src/cmd/gofmt/rewrite.go @@ -35,10 +35,10 @@ func initRewrite() { // It might make sense to expand this to allow statement patterns, // but there are problems with preserving formatting and also // with what a wildcard for a statement looks like. -func parseExpr(s string, what string) ast.Expr { +func parseExpr(s, what string) ast.Expr { x, err := parser.ParseExpr(s) if err != nil { - fmt.Fprintf(os.Stderr, "parsing %s %s: %s\n", what, s, err) + fmt.Fprintf(os.Stderr, "parsing %s %s at %s\n", what, s, err) os.Exit(2) } return x diff --git a/src/cmd/gofmt/testdata/rewrite8.golden b/src/cmd/gofmt/testdata/rewrite8.golden new file mode 100644 index 000000000..cfc452b03 --- /dev/null +++ b/src/cmd/gofmt/testdata/rewrite8.golden @@ -0,0 +1,10 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Check that literal type expression rewrites are accepted. +// Was issue 4406. + +package p + +type T int diff --git a/src/cmd/gofmt/testdata/rewrite8.input b/src/cmd/gofmt/testdata/rewrite8.input new file mode 100644 index 000000000..235efa91c --- /dev/null +++ b/src/cmd/gofmt/testdata/rewrite8.input @@ -0,0 +1,10 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Check that literal type expression rewrites are accepted. +// Was issue 4406. + +package p + +type T interface{} |