Commit 1cf6fdf8 authored by Robert Griesemer's avatar Robert Griesemer

gofmt: make sure certain 2-line comments are stable

       under repeated application of gofmt

R=agl, agl1
CC=golang-dev
https://golang.org/cl/212046
parent fb550660
...@@ -429,6 +429,7 @@ func stripCommonPrefix(lines [][]byte) { ...@@ -429,6 +429,7 @@ func stripCommonPrefix(lines [][]byte) {
if len(lines) < 2 { if len(lines) < 2 {
return // at most one line - nothing to do return // at most one line - nothing to do
} }
// len(lines) >= 2
// The heuristic in this function tries to handle a few // The heuristic in this function tries to handle a few
// common patterns of /*-style comments: Comments where // common patterns of /*-style comments: Comments where
...@@ -441,18 +442,28 @@ func stripCommonPrefix(lines [][]byte) { ...@@ -441,18 +442,28 @@ func stripCommonPrefix(lines [][]byte) {
// Compute maximum common white prefix of all but the first, // Compute maximum common white prefix of all but the first,
// last, and blank lines, and replace blank lines with empty // last, and blank lines, and replace blank lines with empty
// lines (the first line starts with /* and has no prefix). // 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 var prefix []byte
for i, line := range lines { if len(lines) > 2 {
switch { for i, line := range lines[1 : len(lines)-1] {
case i == 0 || i == len(lines)-1: switch {
// ignore case isBlank(line):
case isBlank(line): lines[i+1] = nil
lines[i] = nil case prefix == nil:
case prefix == nil: prefix = commonPrefix(line, line)
prefix = commonPrefix(line, line) default:
default: prefix = commonPrefix(prefix, line)
prefix = commonPrefix(prefix, line) }
} }
} else { // len(lines) == 2
line := lines[1]
prefix = commonPrefix(line, line)
} }
/* /*
......
...@@ -217,6 +217,80 @@ func _() { ...@@ -217,6 +217,80 @@ func _() {
aligned line */ 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 * line
...@@ -232,6 +306,24 @@ func _() { ...@@ -232,6 +306,24 @@ func _() {
* of * of
* stars */ * 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 aligned in middle
here here
......
...@@ -217,6 +217,80 @@ func _() { ...@@ -217,6 +217,80 @@ func _() {
aligned line */ 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 * line
...@@ -232,6 +306,24 @@ func _() { ...@@ -232,6 +306,24 @@ func _() {
* of * of
* stars */ * 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 aligned in middle
here here
......
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