]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/doc: make comments inside functions appear with -src
authorRob Pike <r@golang.org>
Thu, 18 Oct 2018 02:46:54 +0000 (13:46 +1100)
committerRob Pike <r@golang.org>
Thu, 18 Oct 2018 04:11:33 +0000 (04:11 +0000)
The old godoc didn't do this either, perhaps because it's a little
tricky, but it can be done using a special type from the go/printer
package. (Usually we just use go/format).

Fixes #28195.

Change-Id: Ic6d3df3953ba71128398ceaf9a133c798551b6b8
Reviewed-on: https://go-review.googlesource.com/c/143037
Reviewed-by: Robert Griesemer <gri@golang.org>
src/cmd/doc/doc_test.go
src/cmd/doc/pkg.go

index ec3a50d87df47e2501ab090a40d79d4b54c48622..f8c52b1988baa224f4aa44a1227e7eea0124a0c5 100644 (file)
@@ -466,8 +466,8 @@ var tests = []test{
                []string{
                        `Comment about exported type`, // Include comment.
                        `type ExportedType struct`,    // Type definition.
-                       `Comment before exported field.*\n.*ExportedField +int` +
-                               `.*Comment on line with exported field`,
+                       `Comment before exported field`,
+                       `ExportedField.*Comment on line with exported field`,
                        `ExportedEmbeddedType.*Comment on line with exported embedded field`,
                        `unexportedType.*Comment on line with unexported embedded field`,
                        `func \(ExportedType\) ExportedMethod\(a int\) bool`,
index 680f555f592759e32ac5f9a3247e4448fdb4e7b9..4b2479e75ca7eb64f877d6e10cd49f791cbe4d7f 100644 (file)
@@ -12,6 +12,7 @@ import (
        "go/doc"
        "go/format"
        "go/parser"
+       "go/printer"
        "go/token"
        "io"
        "log"
@@ -206,7 +207,17 @@ func (pkg *Package) newlines(n int) {
 // clears the stuff we don't want to print anyway. It's a bit of a magic trick.
 func (pkg *Package) emit(comment string, node ast.Node) {
        if node != nil {
-               err := format.Node(&pkg.buf, pkg.fs, node)
+               var err error
+               if showSrc {
+                       // Need an extra little dance to get internal comments to appear.
+                       commentedNode := &printer.CommentedNode{
+                               Node:     node,
+                               Comments: pkg.file.Comments,
+                       }
+                       err = format.Node(&pkg.buf, pkg.fs, commentedNode)
+               } else {
+                       err = format.Node(&pkg.buf, pkg.fs, node)
+               }
                if err != nil {
                        log.Fatal(err)
                }