Commit 65ef999d authored by Agniva De Sarker's avatar Agniva De Sarker Committed by Rob Pike

cmd/doc: stop showing interface methods while matching symbols

Fixes #31961

Change-Id: I9db9ecfd2f8ca7cf51df4413a6e0d66de5da7043
Reviewed-on: https://go-review.googlesource.com/c/go/+/178457
Run-TryBot: Agniva De Sarker <agniva.quicksilver@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: default avatarRob Pike <r@golang.org>
parent e2970a45
...@@ -602,6 +602,19 @@ var tests = []test{ ...@@ -602,6 +602,19 @@ var tests = []test{
`Comment about exported interface`, `Comment about exported interface`,
}, },
}, },
// Interface method at package level.
{
"interface method at package level",
[]string{p, `ExportedMethod`},
[]string{
`func \(ExportedType\) ExportedMethod\(a int\) bool`,
`Comment about exported method`,
},
[]string{
`Comment before exported method.*\n.*ExportedMethod\(\)` +
`.*Comment on line with exported method`,
},
},
// Method. // Method.
{ {
......
...@@ -914,8 +914,8 @@ func trimUnexportedFields(fields *ast.FieldList, isInterface bool) *ast.FieldLis ...@@ -914,8 +914,8 @@ func trimUnexportedFields(fields *ast.FieldList, isInterface bool) *ast.FieldLis
} }
// printMethodDoc prints the docs for matches of symbol.method. // printMethodDoc prints the docs for matches of symbol.method.
// If symbol is empty, it prints all methods that match the name. // If symbol is empty, it prints all methods for any concrete type
// It reports whether it found any methods. // that match the name. It reports whether it found any methods.
func (pkg *Package) printMethodDoc(symbol, method string) bool { func (pkg *Package) printMethodDoc(symbol, method string) bool {
defer pkg.flush() defer pkg.flush()
types := pkg.findTypes(symbol) types := pkg.findTypes(symbol)
...@@ -937,6 +937,9 @@ func (pkg *Package) printMethodDoc(symbol, method string) bool { ...@@ -937,6 +937,9 @@ func (pkg *Package) printMethodDoc(symbol, method string) bool {
} }
continue continue
} }
if symbol == "" {
continue
}
// Type may be an interface. The go/doc package does not attach // Type may be an interface. The go/doc package does not attach
// an interface's methods to the doc.Type. We need to dig around. // an interface's methods to the doc.Type. We need to dig around.
spec := pkg.findTypeSpec(typ.Decl, typ.Name) spec := pkg.findTypeSpec(typ.Decl, typ.Name)
......
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