diff options
| author | Rick Hudson <rlh@golang.org> | 2016-04-27 18:19:16 -0400 |
|---|---|---|
| committer | Rick Hudson <rlh@golang.org> | 2016-04-27 18:46:52 -0400 |
| commit | 23aeb34df172b17b7bfaa85fb59ca64bef9073bb (patch) | |
| tree | a8ab866f1e50f0059856ce628f036d93ab620155 /src/cmd/doc | |
| parent | 1354b32cd70f2702381764fd595dd2faa996840c (diff) | |
| parent | d3c79d324acd7300b6f705e66af8ca711af00d9f (diff) | |
| download | go-23aeb34df172b17b7bfaa85fb59ca64bef9073bb.tar.xz | |
[dev.garbage] Merge remote-tracking branch 'origin/master' into HEAD
Change-Id: I282fd9ce9db435dfd35e882a9502ab1abc185297
Diffstat (limited to 'src/cmd/doc')
| -rw-r--r-- | src/cmd/doc/pkg.go | 34 |
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 { |
