]> Cypherpunks repositories - gostls13.git/commitdiff
gofmt: make sure certain 2-line comments are stable
authorRobert Griesemer <gri@golang.org>
Wed, 17 Feb 2010 23:41:26 +0000 (15:41 -0800)
committerRobert Griesemer <gri@golang.org>
Wed, 17 Feb 2010 23:41:26 +0000 (15:41 -0800)
       under repeated application of gofmt

R=agl, agl1
CC=golang-dev
https://golang.org/cl/212046

src/pkg/go/printer/printer.go
src/pkg/go/printer/testdata/comments.golden
src/pkg/go/printer/testdata/comments.input

index 304ba0b0ac284991799105739e501391089d288d..90f3e20161a0ecf263d2c06f7514738a4fc0a701 100644 (file)
@@ -429,6 +429,7 @@ func stripCommonPrefix(lines [][]byte) {
        if len(lines) < 2 {
                return // at most one line - nothing to do
        }
+       // len(lines) >= 2
 
        // The heuristic in this function tries to handle a few
        // common patterns of /*-style comments: Comments where
@@ -441,18 +442,28 @@ func stripCommonPrefix(lines [][]byte) {
        // Compute maximum common white prefix of all but the first,
        // last, and blank lines, and replace blank lines with empty
        // lines (the first line starts with /* and has no prefix).
+       // In case of two-line comments, consider the last line for
+       // the prefix computation since otherwise the prefix would
+       // be empty.
+       //
+       // Note that the first and last line are never empty (they
+       // contain the opening /* and closing */ respectively) and
+       // thus they can be ignored by the blank line check.
        var prefix []byte
-       for i, line := range lines {
-               switch {
-               case i == 0 || i == len(lines)-1:
-                       // ignore
-               case isBlank(line):
-                       lines[i] = nil
-               case prefix == nil:
-                       prefix = commonPrefix(line, line)
-               default:
-                       prefix = commonPrefix(prefix, line)
+       if len(lines) > 2 {
+               for i, line := range lines[1 : len(lines)-1] {
+                       switch {
+                       case isBlank(line):
+                               lines[i+1] = nil
+                       case prefix == nil:
+                               prefix = commonPrefix(line, line)
+                       default:
+                               prefix = commonPrefix(prefix, line)
+                       }
                }
+       } else { // len(lines) == 2
+               line := lines[1]
+               prefix = commonPrefix(line, line)
        }
 
        /*
index 741500c621bc4e8a486019051bab5adf8f4b7fa2..18a407478ecb8363e669d4f806bc9e096d45627e 100644 (file)
@@ -217,6 +217,80 @@ func _() {
                aligned line */
 }
 
+func _() {
+       /* freestanding comment
+          aligned line
+       */
+}
+
+func _() {
+       /* freestanding comment
+          aligned line
+       */
+}
+
+func _() {
+       /* freestanding comment
+          aligned line */
+}
+
+func _() {
+       /*      freestanding comment
+               aligned line
+       */
+}
+
+func _() {
+       /*      freestanding comment
+               aligned line
+       */
+}
+
+func _() {
+       /*      freestanding comment
+               aligned line */
+}
+
+
+func _() {
+       /*
+          freestanding comment
+          aligned line
+       */
+}
+
+func _() {
+       /*
+          freestanding comment
+          aligned line
+       */
+}
+
+func _() {
+       /*
+          freestanding comment
+          aligned line */
+}
+
+func _() {
+       /*
+               freestanding comment
+               aligned line
+       */
+}
+
+func _() {
+       /*
+               freestanding comment
+               aligned line
+       */
+}
+
+func _() {
+       /*
+               freestanding comment
+               aligned line */
+}
 
 /*
  * line
@@ -232,6 +306,24 @@ func _() {
  *     of
  *     stars */
 
+/* a line of
+ * stars */
+
+/*     and another line of
+ *     stars */
+
+/* a line of stars
+ */
+
+/*     and another line of
+ */
+
+/* a line of stars
+ */
+
+/*     and another line of
+ */
+
 /*
 aligned in middle
 here
index 700a4923069460b0ca73cd4454328e50caa8098f..8cba7e5a2cd4090bb132477e6ffcbb39011165e5 100644 (file)
@@ -217,6 +217,80 @@ func _() {
                aligned line */
 }
 
+func _() {
+       /* freestanding comment
+          aligned line
+       */
+}
+
+func _() {
+       /* freestanding comment
+          aligned line
+          */
+}
+
+func _() {
+       /* freestanding comment
+          aligned line */
+}
+
+func _() {
+       /*      freestanding comment
+               aligned line
+       */
+}
+
+func _() {
+       /*      freestanding comment
+               aligned line
+               */
+}
+
+func _() {
+       /*      freestanding comment
+               aligned line */
+}
+
+
+func _() {
+       /*
+          freestanding comment
+          aligned line
+       */
+}
+
+func _() {
+       /*
+          freestanding comment
+          aligned line
+          */
+}
+
+func _() {
+       /*
+          freestanding comment
+          aligned line */
+}
+
+func _() {
+       /*
+               freestanding comment
+               aligned line
+       */
+}
+
+func _() {
+       /*
+               freestanding comment
+               aligned line
+               */
+}
+
+func _() {
+       /*
+               freestanding comment
+               aligned line */
+}
 
 /*
  * line
@@ -232,6 +306,24 @@ func _() {
  *     of
  *     stars */
 
+/* a line of
+ * stars */
+
+/*     and another line of
+ *     stars */
+
+/* a line of stars
+*/
+
+/*     and another line of
+*/
+
+/* a line of stars
+ */
+
+/*     and another line of
+ */
+
 /*
 aligned in middle
 here