]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/doc: do not show unexported constants
authorRob Pike <r@golang.org>
Tue, 2 Jun 2015 21:43:38 +0000 (14:43 -0700)
committerRob Pike <r@golang.org>
Thu, 4 Jun 2015 21:51:49 +0000 (21:51 +0000)
The go/doc package doesn't remove unexported entries from const
and var blocks, so we must trim them ourselves.

Fixes #11008

Change-Id: Ibd60d87e09333964e2588340a2ca2b8804bbaa28
Reviewed-on: https://go-review.googlesource.com/10643
Reviewed-by: Russ Cox <rsc@golang.org>
src/cmd/doc/pkg.go

index 5c8976b663e98fd927906d3203dadd0e2320e93c..17ee8cee4ff28b285407eb39025ae60adcbb080e 100644 (file)
@@ -332,6 +332,25 @@ func (pkg *Package) symbolDoc(symbol string) {
        values := pkg.findValues(symbol, pkg.doc.Consts)
        values = append(values, pkg.findValues(symbol, pkg.doc.Vars)...)
        for _, value := range values {
+               // Print each spec only if there is at least one exported symbol in it.
+               // (See issue 11008.)
+               // TODO: Should we elide unexported symbols from a single spec?
+               // It's an unlikely scenario, probably not worth the trouble.
+               // TODO: Would be nice if go/doc did this for us.
+               specs := make([]ast.Spec, 0, len(value.Decl.Specs))
+               for _, spec := range value.Decl.Specs {
+                       vspec := spec.(*ast.ValueSpec)
+                       for _, ident := range vspec.Names {
+                               if isExported(ident.Name) {
+                                       specs = append(specs, vspec)
+                                       break
+                               }
+                       }
+               }
+               if len(specs) == 0 {
+                       continue
+               }
+               value.Decl.Specs = specs
                if !found {
                        pkg.packageClause(true)
                }