diff --git a/src/go/doc/comment.go b/src/go/doc/comment.go index 31ee93e44f..88be45bb8f 100644 --- a/src/go/doc/comment.go +++ b/src/go/doc/comment.go @@ -464,6 +464,7 @@ type lineWrapper struct { var nl = []byte("\n") var space = []byte(" ") +var prefix = []byte("// ") func (l *lineWrapper) write(text string) { if l.n == 0 && l.printed { @@ -471,6 +472,8 @@ func (l *lineWrapper) write(text string) { } l.printed = true + needsPrefix := false + isComment := strings.HasPrefix(text, "//") for _, f := range strings.Fields(text) { w := utf8.RuneCountInString(f) // wrap if line is too long @@ -478,10 +481,15 @@ func (l *lineWrapper) write(text string) { l.out.Write(nl) l.n = 0 l.pendSpace = 0 + needsPrefix = isComment } if l.n == 0 { l.out.Write([]byte(l.indent)) } + if needsPrefix { + l.out.Write(prefix) + needsPrefix = false + } l.out.Write(space[:l.pendSpace]) l.out.Write([]byte(f)) l.n += l.pendSpace + w diff --git a/src/go/doc/comment_test.go b/src/go/doc/comment_test.go index 0687f3a62b..101f446287 100644 --- a/src/go/doc/comment_test.go +++ b/src/go/doc/comment_test.go @@ -134,6 +134,26 @@ $ pre2 }, text: ". Para.\n\n$ should not be ``escaped''", }, + { + in: "// A very long line of 46 char for line wrapping.", + out: []block{ + {opPara, []string{"// A very long line of 46 char for line wrapping."}}, + }, + text: `. // A very long line of 46 char for line +. // wrapping. +`, + }, + { + in: `/* A very long line of 46 char for line wrapping. +A very long line of 46 char for line wrapping. */`, + out: []block{ + {opPara, []string{"/* A very long line of 46 char for line wrapping.\n", "A very long line of 46 char for line wrapping. */"}}, + }, + text: `. /* A very long line of 46 char for line +. wrapping. A very long line of 46 char +. for line wrapping. */ +`, + }, } func TestBlocks(t *testing.T) {