mirror of
https://github.com/golang/go
synced 2024-10-04 21:21:22 -06:00
cmd/doc: group constructors with type in package presentation
Fixes #14004. $ go doc encoding.gob Before: func Register(value interface{}) func RegisterName(name string, value interface{}) func NewDecoder(r io.Reader) *Decoder func NewEncoder(w io.Writer) *Encoder type CommonType struct { ... } type Decoder struct { ... } type Encoder struct { ... } type GobDecoder interface { ... } type GobEncoder interface { ... } After: func Register(value interface{}) func RegisterName(name string, value interface{}) type CommonType struct { ... } type Decoder struct { ... } func NewDecoder(r io.Reader) *Decoder type Encoder struct { ... } func NewEncoder(w io.Writer) *Encoder type GobDecoder interface { ... } type GobEncoder interface { ... } Change-Id: I021db25bce4a16b3dfa22ab323ca1f4e68d50111 Reviewed-on: https://go-review.googlesource.com/22354 Reviewed-by: Robert Griesemer <gri@golang.org>
This commit is contained in:
parent
8ad8d7d87e
commit
a33e9cf7ea
@ -268,7 +268,7 @@ func (pkg *Package) packageDoc() {
|
|||||||
pkg.newlines(2) // Guarantee blank line before the components.
|
pkg.newlines(2) // Guarantee blank line before the components.
|
||||||
pkg.valueSummary(pkg.doc.Consts)
|
pkg.valueSummary(pkg.doc.Consts)
|
||||||
pkg.valueSummary(pkg.doc.Vars)
|
pkg.valueSummary(pkg.doc.Vars)
|
||||||
pkg.funcSummary(pkg.doc.Funcs)
|
pkg.funcSummary(pkg.doc.Funcs, false)
|
||||||
pkg.typeSummary()
|
pkg.typeSummary()
|
||||||
pkg.bugs()
|
pkg.bugs()
|
||||||
}
|
}
|
||||||
@ -308,24 +308,44 @@ func (pkg *Package) valueSummary(values []*doc.Value) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// funcSummary prints a one-line summary for each function.
|
// funcSummary prints a one-line summary for each function. Constructors
|
||||||
func (pkg *Package) funcSummary(funcs []*doc.Func) {
|
// 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 {
|
for _, fun := range funcs {
|
||||||
decl := fun.Decl
|
decl := fun.Decl
|
||||||
// Exported functions only. The go/doc package does not include methods here.
|
// Exported functions only. The go/doc package does not include methods here.
|
||||||
if isExported(fun.Name) {
|
if isExported(fun.Name) {
|
||||||
|
if !isConstructor[fun] {
|
||||||
pkg.oneLineFunc(decl)
|
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() {
|
func (pkg *Package) typeSummary() {
|
||||||
for _, typ := range pkg.doc.Types {
|
for _, typ := range pkg.doc.Types {
|
||||||
for _, spec := range typ.Decl.Specs {
|
for _, spec := range typ.Decl.Specs {
|
||||||
typeSpec := spec.(*ast.TypeSpec) // Must succeed.
|
typeSpec := spec.(*ast.TypeSpec) // Must succeed.
|
||||||
if isExported(typeSpec.Name.Name) {
|
if isExported(typeSpec.Name.Name) {
|
||||||
pkg.oneLineTypeDecl(typeSpec)
|
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.Consts)
|
||||||
pkg.valueSummary(typ.Vars)
|
pkg.valueSummary(typ.Vars)
|
||||||
pkg.funcSummary(typ.Funcs)
|
pkg.funcSummary(typ.Funcs, true)
|
||||||
pkg.funcSummary(typ.Methods)
|
pkg.funcSummary(typ.Methods, true)
|
||||||
found = true
|
found = true
|
||||||
}
|
}
|
||||||
if !found {
|
if !found {
|
||||||
|
Loading…
Reference in New Issue
Block a user