]> Cypherpunks repositories - gostls13.git/commitdiff
go/printer, gofmt: rely on existing line breaks when formatting expression lists
authorRobert Griesemer <gri@golang.org>
Tue, 29 Mar 2011 01:48:52 +0000 (18:48 -0700)
committerRobert Griesemer <gri@golang.org>
Tue, 29 Mar 2011 01:48:52 +0000 (18:48 -0700)
No impact on existing sources.

Fixes #1632.

R=rsc
CC=golang-dev
https://golang.org/cl/4271083

src/pkg/go/printer/nodes.go
src/pkg/go/printer/testdata/expressions.golden
src/pkg/go/printer/testdata/expressions.input
src/pkg/go/printer/testdata/expressions.raw

index 8f0d74ca630187ec59977a4b4764b4d8f35c909b..2f12038e522d59ea18db8e6a36ace753b855282a 100644 (file)
@@ -160,19 +160,7 @@ func (p *printer) exprList(prev0 token.Pos, list []ast.Expr, depth int, mode exp
        // the first linebreak is always a formfeed since this section must not
        // depend on any previous formatting
        prevBreak := -1 // index of last expression that was followed by a linebreak
-       linebreakMin := 1
-       if mode&periodSep != 0 {
-               // Make fragments like
-               //
-               // a.Bar(1,
-               //   2).Foo
-               //
-               // format correctly (a linebreak shouldn't be added before Foo) when
-               // doing period-separated expr lists by setting minimum linebreak to 0
-               // lines for them.
-               linebreakMin = 0
-       }
-       if prev.IsValid() && prev.Line < line && p.linebreak(line, linebreakMin, ws, true) {
+       if prev.IsValid() && prev.Line < line && p.linebreak(line, 0, ws, true) {
                ws = ignore
                *multiLine = true
                prevBreak = 0
@@ -237,7 +225,7 @@ func (p *printer) exprList(prev0 token.Pos, list []ast.Expr, depth int, mode exp
                                // lines are broken using newlines so comments remain aligned
                                // unless forceFF is set or there are multiple expressions on
                                // the same line in which case formfeed is used
-                               if p.linebreak(line, linebreakMin, ws, useFF || prevBreak+1 < i) {
+                               if p.linebreak(line, 0, ws, useFF || prevBreak+1 < i) {
                                        ws = ignore
                                        *multiLine = true
                                        prevBreak = i
index 314d3213c740a0ecc3972d5b528ff3f5c5a373ca..788b9cd2226bf8e95973cf269c328286b970f32e 100644 (file)
@@ -619,3 +619,13 @@ func _() {
                b.(T).
                c
 }
+
+
+// Don't introduce extra newlines in strangely formatted expression lists.
+func f() {
+       // os.Open parameters should remain on two lines
+       if writer, err = os.Open(outfile, s.O_WRONLY|os.O_CREATE|
+               os.O_TRUNC,0666); err != nil {
+               log.Fatal(err)
+       }
+}
index cac22af431312fa08d5eb23318183593e2c5b596..2c2ebce040305e63637b0d2ff6a22dd2c8ccae0c 100644 (file)
@@ -625,3 +625,13 @@ baz()
        (T).
        c
 }
+
+
+// Don't introduce extra newlines in strangely formatted expression lists.
+func f() {
+       // os.Open parameters should remain on two lines
+       if writer, err = os.Open(outfile, s.O_WRONLY|os.O_CREATE|
+               os.O_TRUNC, 0666); err != nil {
+           log.Fatal(err)
+       }
+}
index f22ceeb476f9083af9b88a498a383b56828d15dc..0d22779c61765dffcf36441c3a8f14c2c5b0b168 100644 (file)
@@ -618,3 +618,13 @@ func _() {
                b.(T).
                c
 }
+
+
+// Don't introduce extra newlines in strangely formatted expression lists.
+func f() {
+       // os.Open parameters should remain on two lines
+       if writer, err = os.Open(outfile, s.O_WRONLY|os.O_CREATE|
+               os.O_TRUNC,0666); err != nil {
+               log.Fatal(err)
+       }
+}