summaryrefslogtreecommitdiff
path: root/src/go
diff options
context:
space:
mode:
authorRobert Griesemer <gri@golang.org>2014-09-30 12:26:38 -0700
committerRobert Griesemer <gri@golang.org>2014-09-30 12:26:38 -0700
commit9f22c8913d2ca1806b3ddcd6b64a81f21a577bc9 (patch)
treee11b20cafd50cf645f01b0276db12cb2daf09677 /src/go
parentcd9d0fc4cec3c1e37f3eb57402b5f9405e7f3beb (diff)
downloadgo-9f22c8913d2ca1806b3ddcd6b64a81f21a577bc9.tar.gz
go/format, cmd/gofmt: added missing comments, minor internal cleanup
This is a minor cleanup following CL 142360043: The internal parse and format functions in both packages were almost identical - made them identical by adding an extra parameter, and documented them as identical. Eventually we should find a nice way to factor these functions out, but we cannot do this now while in prep for 1.4. No functionality change. LGTM=adonovan R=adonovan CC=golang-codereviews https://codereview.appspot.com/146520043
Diffstat (limited to 'src/go')
-rw-r--r--src/go/format/format.go36
1 files changed, 29 insertions, 7 deletions
diff --git a/src/go/format/format.go b/src/go/format/format.go
index 08a9047b9..668a42df2 100644
--- a/src/go/format/format.go
+++ b/src/go/format/format.go
@@ -87,7 +87,13 @@ func Source(src []byte) ([]byte, error) {
return nil, err
}
- return format(fset, file, sourceAdj, indentAdj, src)
+ if sourceAdj == nil {
+ // Complete source file.
+ // TODO(gri) consider doing this always.
+ ast.SortImports(fset, file)
+ }
+
+ return format(fset, file, sourceAdj, indentAdj, src, config)
}
func hasUnsortedImports(file *ast.File) bool {
@@ -108,8 +114,16 @@ func hasUnsortedImports(file *ast.File) bool {
return false
}
-// parse parses src, which was read from filename,
-// as a Go source file or statement list.
+// ----------------------------------------------------------------------------
+// Support functions
+//
+// The functions parse, format, and isSpace below are identical to the
+// respective functions in cmd/gofmt/gofmt.go - keep them in sync!
+//
+// TODO(gri) Factor out this functionality, eventually.
+
+// parse parses src, which was read from the named file,
+// as a Go source file, declaration, or statement list.
func parse(fset *token.FileSet, filename string, src []byte, fragmentOk bool) (
file *ast.File,
sourceAdj func(src []byte, indent int) []byte,
@@ -176,12 +190,21 @@ func parse(fset *token.FileSet, filename string, src []byte, fragmentOk bool) (
return
}
-func format(fset *token.FileSet, file *ast.File, sourceAdj func(src []byte, indent int) []byte, indentAdj int, src []byte) ([]byte, error) {
+// format formats the given package file originally obtained from src
+// and adjusts the result based on the original source via sourceAdj
+// and indentAdj.
+func format(
+ fset *token.FileSet,
+ file *ast.File,
+ sourceAdj func(src []byte, indent int) []byte,
+ indentAdj int,
+ src []byte,
+ cfg printer.Config,
+) ([]byte, error) {
if sourceAdj == nil {
// Complete source file.
- ast.SortImports(fset, file)
var buf bytes.Buffer
- err := config.Fprint(&buf, fset, file)
+ err := cfg.Fprint(&buf, fset, file)
if err != nil {
return nil, err
}
@@ -222,7 +245,6 @@ func format(fset *token.FileSet, file *ast.File, sourceAdj func(src []byte, inde
// Format the source.
// Write it without any leading and trailing space.
- cfg := config
cfg.Indent = indent + indentAdj
var buf bytes.Buffer
err := cfg.Fprint(&buf, fset, file)