From: Russ Cox Date: Mon, 5 Oct 2009 18:24:01 +0000 (-0700) Subject: preserve blank lines in // comments X-Git-Tag: weekly.2009-11-06~414 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=7d85cebb1cc7b7ef01b9766f321f4ac5b950e010;p=gostls13.git preserve blank lines in // comments R=gri DELTA=32 (13 added, 12 deleted, 7 changed) OCL=35317 CL=35332 --- diff --git a/src/pkg/go/doc/comment.go b/src/pkg/go/doc/comment.go index 90212780d0..ea361f851f 100644 --- a/src/pkg/go/doc/comment.go +++ b/src/pkg/go/doc/comment.go @@ -76,24 +76,12 @@ func CommentText(comment *ast.CommentGroup) string { l = l[m[1] : len(l)]; } - // throw away leading blank lines - if w == 0 && l == "" { - continue; - } - cl[w] = l; w++; } + cl = cl[0:w]; - // throw away trailing blank lines - for w > 0 && cl[w-1] == "" { - w--; - } - cl = cl[0 : w]; - - // add this comment to total list - // TODO: maybe separate with a single blank line - // if there is already a comment and len(cl) > 0? + // Add this comment to total list. for _, l := range cl { n := len(lines); if n+1 >= cap(lines) { @@ -108,10 +96,23 @@ func CommentText(comment *ast.CommentGroup) string { } } - // add final "" entry to get trailing newline. - // loop always leaves room for one more. - n := len(lines); - lines = lines[0 : n+1]; + // Remove leading blank lines; convert runs of + // interior blank lines to a single blank line. + n := 0; + for _, line := range lines { + if line != "" || n > 0 && lines[n-1] != "" { + lines[n] = line; + n++; + } + } + lines = lines[0 : n]; + + // Add final "" entry to get trailing newline from Join. + // The original loop always leaves room for one more. + if n > 0 && lines[n-1] != "" { + lines = lines[0 : n+1]; + lines[n] = ""; + } return strings.Join(lines, "\n"); }