cmd/doc: ensure functions with unexported return values are shown

The commit in golang.org/cl/22354 groups constructors functions under
the type that they construct to. However, this caused a minor regression
where functions that had unexported return values were not being printed
at all. Thus, we forgo the grouping logic if the type the constructor falls
under is not going to be printed.

Fixes #16568

Change-Id: Idc14f5d03770282a519dc22187646bda676af612
Reviewed-on: https://go-review.googlesource.com/25369
Run-TryBot: Joe Tsai <thebrokentoaster@gmail.com>
Reviewed-by: Rob Pike <r@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
This commit is contained in:
Joe Tsai 2016-08-01 20:04:25 -07:00 committed by Joe Tsai
parent f5758739a8
commit 6317c213c9
3 changed files with 11 additions and 4 deletions

View file

@ -61,6 +61,7 @@ var tests = []test{
`var ExportedVariable = 1`, // Simple variable. `var ExportedVariable = 1`, // Simple variable.
`var VarOne = 1`, // First entry in variable block. `var VarOne = 1`, // First entry in variable block.
`func ExportedFunc\(a int\) bool`, // Function. `func ExportedFunc\(a int\) bool`, // Function.
`func ReturnUnexported\(\) unexportedType`, // Function with unexported return type.
`type ExportedType struct { ... }`, // Exported type. `type ExportedType struct { ... }`, // Exported type.
`const ExportedTypedConstant ExportedType = iota`, // Typed constant. `const ExportedTypedConstant ExportedType = iota`, // Typed constant.
`const ExportedTypedConstant_unexported unexportedType`, // Typed constant, exported for unexported type. `const ExportedTypedConstant_unexported unexportedType`, // Typed constant, exported for unexported type.
@ -89,9 +90,10 @@ var tests = []test{
"full package with u", "full package with u",
[]string{`-u`, p}, []string{`-u`, p},
[]string{ []string{
`const ExportedConstant = 1`, // Simple constant. `const ExportedConstant = 1`, // Simple constant.
`const internalConstant = 2`, // Internal constants. `const internalConstant = 2`, // Internal constants.
`func internalFunc\(a int\) bool`, // Internal functions. `func internalFunc\(a int\) bool`, // Internal functions.
`func ReturnUnexported\(\) unexportedType`, // Function with unexported return type.
}, },
[]string{ []string{
`Comment about exported constant`, // No comment for simple constant. `Comment about exported constant`, // No comment for simple constant.

View file

@ -317,7 +317,9 @@ func (pkg *Package) funcSummary(funcs []*doc.Func, showConstructors bool) {
isConstructor = make(map[*doc.Func]bool) isConstructor = make(map[*doc.Func]bool)
for _, typ := range pkg.doc.Types { for _, typ := range pkg.doc.Types {
for _, constructor := range typ.Funcs { for _, constructor := range typ.Funcs {
isConstructor[constructor] = true if isExported(typ.Name) {
isConstructor[constructor] = true
}
} }
} }
} }

View file

@ -123,3 +123,6 @@ const unexportedTypedConstant unexportedType = 1 // In a separate section to tes
// For case matching. // For case matching.
const CaseMatch = 1 const CaseMatch = 1
const Casematch = 2 const Casematch = 2
func ReturnUnexported() unexportedType { return 0 }
func ReturnExported() ExportedType { return ExportedType{} }