diff options
author | Ian Lance Taylor <ian@gcc.gnu.org> | 2015-01-06 23:26:02 +0000 |
---|---|---|
committer | Ian Lance Taylor <ian@gcc.gnu.org> | 2015-01-06 23:26:02 +0000 |
commit | 7d7d64c1ae3c0732b167d2050b101808f078d711 (patch) | |
tree | 40ecf33efd29feac369ae050140bc3fefed352e9 /libgo/go/cmd/gofmt/doc.go | |
parent | efcdb22fe3288fbfa4cd8ba9554b3a561c4d6e08 (diff) | |
download | gcc-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.go | 93 |
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. |