From: Agniva De Sarker Date: Wed, 22 May 2019 08:05:04 +0000 (+0200) Subject: cmd/doc: stop showing interface methods while matching symbols X-Git-Tag: go1.13beta1~217 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=65ef999d52ebce2534e8006d7a6d5bb6871f3c24;p=gostls13.git 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 TryBot-Result: Gobot Gobot Reviewed-by: Rob Pike --- diff --git a/src/cmd/doc/doc_test.go b/src/cmd/doc/doc_test.go index 22468db1ff..bc870aca58 100644 --- a/src/cmd/doc/doc_test.go +++ b/src/cmd/doc/doc_test.go @@ -602,6 +602,19 @@ var tests = []test{ `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. { diff --git a/src/cmd/doc/pkg.go b/src/cmd/doc/pkg.go index 12b76c2ad0..32810bd581 100644 --- a/src/cmd/doc/pkg.go +++ b/src/cmd/doc/pkg.go @@ -914,8 +914,8 @@ func trimUnexportedFields(fields *ast.FieldList, isInterface bool) *ast.FieldLis } // printMethodDoc prints the docs for matches of symbol.method. -// If symbol is empty, it prints all methods that match the name. -// It reports whether it found any methods. +// If symbol is empty, it prints all methods for any concrete type +// that match the name. It reports whether it found any methods. func (pkg *Package) printMethodDoc(symbol, method string) bool { defer pkg.flush() types := pkg.findTypes(symbol) @@ -937,6 +937,9 @@ func (pkg *Package) printMethodDoc(symbol, method string) bool { } continue } + if symbol == "" { + continue + } // 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. spec := pkg.findTypeSpec(typ.Decl, typ.Name)