aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/doc/pkg.go
diff options
context:
space:
mode:
authorRick Hudson <rlh@golang.org>2016-04-27 18:19:16 -0400
committerRick Hudson <rlh@golang.org>2016-04-27 18:46:52 -0400
commit23aeb34df172b17b7bfaa85fb59ca64bef9073bb (patch)
treea8ab866f1e50f0059856ce628f036d93ab620155 /src/cmd/doc/pkg.go
parent1354b32cd70f2702381764fd595dd2faa996840c (diff)
parentd3c79d324acd7300b6f705e66af8ca711af00d9f (diff)
downloadgo-23aeb34df172b17b7bfaa85fb59ca64bef9073bb.tar.xz
[dev.garbage] Merge remote-tracking branch 'origin/master' into HEAD
Change-Id: I282fd9ce9db435dfd35e882a9502ab1abc185297
Diffstat (limited to 'src/cmd/doc/pkg.go')
-rw-r--r--src/cmd/doc/pkg.go34
1 files changed, 27 insertions, 7 deletions
diff --git a/src/cmd/doc/pkg.go b/src/cmd/doc/pkg.go
index d0983d447d..efd681d514 100644
--- a/src/cmd/doc/pkg.go
+++ b/src/cmd/doc/pkg.go
@@ -268,7 +268,7 @@ func (pkg *Package) packageDoc() {
pkg.newlines(2) // Guarantee blank line before the components.
pkg.valueSummary(pkg.doc.Consts)
pkg.valueSummary(pkg.doc.Vars)
- pkg.funcSummary(pkg.doc.Funcs)
+ pkg.funcSummary(pkg.doc.Funcs, false)
pkg.typeSummary()
pkg.bugs()
}
@@ -308,24 +308,44 @@ func (pkg *Package) valueSummary(values []*doc.Value) {
}
}
-// funcSummary prints a one-line summary for each function.
-func (pkg *Package) funcSummary(funcs []*doc.Func) {
+// funcSummary prints a one-line summary for each function. Constructors
+// are printed by typeSummary, below, and so can be suppressed here.
+func (pkg *Package) funcSummary(funcs []*doc.Func, showConstructors bool) {
+ // First, identify the constructors. Don't bother figuring out if they're exported.
+ var isConstructor map[*doc.Func]bool
+ if !showConstructors {
+ isConstructor = make(map[*doc.Func]bool)
+ for _, typ := range pkg.doc.Types {
+ for _, constructor := range typ.Funcs {
+ isConstructor[constructor] = true
+ }
+ }
+ }
for _, fun := range funcs {
decl := fun.Decl
// Exported functions only. The go/doc package does not include methods here.
if isExported(fun.Name) {
- pkg.oneLineFunc(decl)
+ if !isConstructor[fun] {
+ pkg.oneLineFunc(decl)
+ }
}
}
}
-// typeSummary prints a one-line summary for each type.
+// typeSummary prints a one-line summary for each type, followed by its constructors.
func (pkg *Package) typeSummary() {
for _, typ := range pkg.doc.Types {
for _, spec := range typ.Decl.Specs {
typeSpec := spec.(*ast.TypeSpec) // Must succeed.
if isExported(typeSpec.Name.Name) {
pkg.oneLineTypeDecl(typeSpec)
+ // Now print the constructors.
+ for _, constructor := range typ.Funcs {
+ if isExported(constructor.Name) {
+ pkg.Printf(indent)
+ pkg.oneLineFunc(constructor.Decl)
+ }
+ }
}
}
}
@@ -453,8 +473,8 @@ func (pkg *Package) symbolDoc(symbol string) bool {
}
pkg.valueSummary(typ.Consts)
pkg.valueSummary(typ.Vars)
- pkg.funcSummary(typ.Funcs)
- pkg.funcSummary(typ.Methods)
+ pkg.funcSummary(typ.Funcs, true)
+ pkg.funcSummary(typ.Methods, true)
found = true
}
if !found {