Commit 4e99ed6f authored by Rob Pike's avatar Rob Pike

cmd/doc: don't drop const/var block if first entry is unexported

The code assumed that if the first entry was unexported, all the
entries were. The fix is simple: delete a bunch of code.

Fixes #12286.

Change-Id: Icb09274e99ce97df4d8bddbe59d17a5c0622e4c6
Reviewed-on: https://go-review.googlesource.com/14780Reviewed-by: default avatarAndrew Gerrand <adg@golang.org>
parent fcf8143d
...@@ -54,6 +54,7 @@ var tests = []test{ ...@@ -54,6 +54,7 @@ var tests = []test{
`Package comment`, `Package comment`,
`const ExportedConstant = 1`, // Simple constant. `const ExportedConstant = 1`, // Simple constant.
`const ConstOne = 1`, // First entry in constant block. `const ConstOne = 1`, // First entry in constant block.
`const ConstFive ...`, // From block starting with unexported constant.
`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.
...@@ -73,6 +74,7 @@ var tests = []test{ ...@@ -73,6 +74,7 @@ var tests = []test{
`Comment before VarOne`, // No comment for first entry in variable block. `Comment before VarOne`, // No comment for first entry in variable block.
`ConstTwo = 2`, // No second entry in constant block. `ConstTwo = 2`, // No second entry in constant block.
`VarTwo = 2`, // No second entry in variable block. `VarTwo = 2`, // No second entry in variable block.
`VarFive = 5`, // From block starting with unexported variable.
`type unexportedType`, // No unexported type. `type unexportedType`, // No unexported type.
`unexportedTypedConstant`, // No unexported typed constant. `unexportedTypedConstant`, // No unexported typed constant.
`Field`, // No fields. `Field`, // No fields.
......
...@@ -257,19 +257,8 @@ func (pkg *Package) packageClause(checkUserPath bool) { ...@@ -257,19 +257,8 @@ func (pkg *Package) packageClause(checkUserPath bool) {
// valueSummary prints a one-line summary for each set of values and constants. // valueSummary prints a one-line summary for each set of values and constants.
func (pkg *Package) valueSummary(values []*doc.Value) { func (pkg *Package) valueSummary(values []*doc.Value) {
for _, value := range values { for _, value := range values {
// Only print first item in spec, show ... to stand for the rest.
spec := value.Decl.Specs[0].(*ast.ValueSpec) // Must succeed.
exported := true
for _, name := range spec.Names {
if !isExported(name.Name) {
exported = false
break
}
}
if exported {
pkg.oneLineValueGenDecl(value.Decl) pkg.oneLineValueGenDecl(value.Decl)
} }
}
} }
// funcSummary prints a one-line summary for each function. // funcSummary prints a one-line summary for each function.
......
...@@ -21,6 +21,13 @@ const ( ...@@ -21,6 +21,13 @@ const (
constThree = 3 // Comment on line with constThree. constThree = 3 // Comment on line with constThree.
) )
// Const block where first entry is unexported.
const (
constFour = iota
ConstFive
ConstSix
)
// Variables // Variables
// Comment about exported variable. // Comment about exported variable.
...@@ -37,6 +44,13 @@ var ( ...@@ -37,6 +44,13 @@ var (
varThree = 3 // Comment on line with varThree. varThree = 3 // Comment on line with varThree.
) )
// Var block where first entry is unexported.
var (
varFour = 4
VarFive = 5
varSix = 6
)
// Comment about exported function. // Comment about exported function.
func ExportedFunc(a int) bool func ExportedFunc(a int) bool
......
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