Commit 321ede78 authored by Kyle Lemons's avatar Kyle Lemons Committed by Rob Pike

flag: document the zero value of FlagSet

R=golang-dev, r
CC=golang-dev
https://golang.org/cl/12403043
parent 034d5fcc
...@@ -256,7 +256,8 @@ const ( ...@@ -256,7 +256,8 @@ const (
PanicOnError PanicOnError
) )
// A FlagSet represents a set of defined flags. // A FlagSet represents a set of defined flags. The zero value of a FlagSet
// has no name and has ContinueOnError error handling.
type FlagSet struct { type FlagSet struct {
// Usage is the function called when an error occurs while parsing flags. // Usage is the function called when an error occurs while parsing flags.
// The field is a function (not a method) that may be changed to point to // The field is a function (not a method) that may be changed to point to
...@@ -391,7 +392,11 @@ func PrintDefaults() { ...@@ -391,7 +392,11 @@ func PrintDefaults() {
// defaultUsage is the default function to print a usage message. // defaultUsage is the default function to print a usage message.
func defaultUsage(f *FlagSet) { func defaultUsage(f *FlagSet) {
if f.name == "" {
fmt.Fprintf(f.out(), "Usage:\n")
} else {
fmt.Fprintf(f.out(), "Usage of %s:\n", f.name) fmt.Fprintf(f.out(), "Usage of %s:\n", f.name)
}
f.PrintDefaults() f.PrintDefaults()
} }
...@@ -658,7 +663,12 @@ func (f *FlagSet) Var(value Value, name string, usage string) { ...@@ -658,7 +663,12 @@ func (f *FlagSet) Var(value Value, name string, usage string) {
flag := &Flag{name, usage, value, value.String()} flag := &Flag{name, usage, value, value.String()}
_, alreadythere := f.formal[name] _, alreadythere := f.formal[name]
if alreadythere { if alreadythere {
msg := fmt.Sprintf("%s flag redefined: %s", f.name, name) var msg string
if f.name == "" {
msg = fmt.Sprintf("flag redefined: %s", name)
} else {
msg = fmt.Sprintf("%s flag redefined: %s", f.name, name)
}
fmt.Fprintln(f.out(), msg) fmt.Fprintln(f.out(), msg)
panic(msg) // Happens only if flags are declared with identical names panic(msg) // Happens only if flags are declared with identical names
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment