aboutsummaryrefslogtreecommitdiff
path: root/libgo/go/cmd/gofmt/doc.go
diff options
context:
space:
mode:
authorIan Lance Taylor <ian@gcc.gnu.org>2015-01-06 23:26:02 +0000
committerIan Lance Taylor <ian@gcc.gnu.org>2015-01-06 23:26:02 +0000
commit7d7d64c1ae3c0732b167d2050b101808f078d711 (patch)
tree40ecf33efd29feac369ae050140bc3fefed352e9 /libgo/go/cmd/gofmt/doc.go
parentefcdb22fe3288fbfa4cd8ba9554b3a561c4d6e08 (diff)
downloadgcc-7d7d64c1ae3c0732b167d2050b101808f078d711.zip
gcc-7d7d64c1ae3c0732b167d2050b101808f078d711.tar.gz
gcc-7d7d64c1ae3c0732b167d2050b101808f078d711.tar.bz2
libgo: Add sources for go, cgo, and gofmt commands.
The new commands are not yet built. That will be done separately. Also include a few changes to go/build to support them. From-SVN: r219272
Diffstat (limited to 'libgo/go/cmd/gofmt/doc.go')
-rw-r--r--libgo/go/cmd/gofmt/doc.go93
1 files changed, 93 insertions, 0 deletions
diff --git a/libgo/go/cmd/gofmt/doc.go b/libgo/go/cmd/gofmt/doc.go
new file mode 100644
index 0000000..8f73ef5
--- /dev/null
+++ b/libgo/go/cmd/gofmt/doc.go
@@ -0,0 +1,93 @@
+// Copyright 2009 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.
+
+/*
+Gofmt formats Go programs.
+It uses tabs (width = 8) for indentation and blanks for alignment.
+
+Without an explicit path, it processes the standard input. Given a file,
+it operates on that file; given a directory, it operates on all .go files in
+that directory, recursively. (Files starting with a period are ignored.)
+By default, gofmt prints the reformatted sources to standard output.
+
+Usage:
+ gofmt [flags] [path ...]
+
+The flags are:
+ -d
+ Do not print reformatted sources to standard output.
+ If a file's formatting is different than gofmt's, print diffs
+ to standard output.
+ -e
+ Print all (including spurious) errors.
+ -l
+ Do not print reformatted sources to standard output.
+ If a file's formatting is different from gofmt's, print its name
+ to standard output.
+ -r rule
+ Apply the rewrite rule to the source before reformatting.
+ -s
+ Try to simplify code (after applying the rewrite rule, if any).
+ -w
+ Do not print reformatted sources to standard output.
+ If a file's formatting is different from gofmt's, overwrite it
+ with gofmt's version.
+
+Debugging support:
+ -cpuprofile filename
+ Write cpu profile to the specified file.
+
+
+The rewrite rule specified with the -r flag must be a string of the form:
+
+ pattern -> replacement
+
+Both pattern and replacement must be valid Go expressions.
+In the pattern, single-character lowercase identifiers serve as
+wildcards matching arbitrary sub-expressions; those expressions
+will be substituted for the same identifiers in the replacement.
+
+When gofmt reads from standard input, it accepts either a full Go program
+or a program fragment. A program fragment must be a syntactically
+valid declaration list, statement list, or expression. When formatting
+such a fragment, gofmt preserves leading indentation as well as leading
+and trailing spaces, so that individual sections of a Go program can be
+formatted by piping them through gofmt.
+
+Examples
+
+To check files for unnecessary parentheses:
+
+ gofmt -r '(a) -> a' -l *.go
+
+To remove the parentheses:
+
+ gofmt -r '(a) -> a' -w *.go
+
+To convert the package tree from explicit slice upper bounds to implicit ones:
+
+ gofmt -r 'α[β:len(α)] -> α[β:]' -w $GOROOT/src/pkg
+
+The simplify command
+
+When invoked with -s gofmt will make the following source transformations where possible.
+
+ An array, slice, or map composite literal of the form:
+ []T{T{}, T{}}
+ will be simplified to:
+ []T{{}, {}}
+
+ A slice expression of the form:
+ s[a:len(s)]
+ will be simplified to:
+ s[a:]
+
+ A range of the form:
+ for x, _ = range v {...}
+ will be simplified to:
+ for x = range v {...}
+*/
+package main
+
+// BUG(rsc): The implementation of -r is a bit slow.