mirror of
https://github.com/golang/go
synced 2024-11-21 19:14:44 -07:00
go/printer, gofmt: rely on existing line breaks when formatting expression lists
No impact on existing sources. Fixes #1632. R=rsc CC=golang-dev https://golang.org/cl/4271083
This commit is contained in:
parent
b2658452a6
commit
5a3aae4bf7
@ -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
|
// the first linebreak is always a formfeed since this section must not
|
||||||
// depend on any previous formatting
|
// depend on any previous formatting
|
||||||
prevBreak := -1 // index of last expression that was followed by a linebreak
|
prevBreak := -1 // index of last expression that was followed by a linebreak
|
||||||
linebreakMin := 1
|
if prev.IsValid() && prev.Line < line && p.linebreak(line, 0, ws, true) {
|
||||||
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) {
|
|
||||||
ws = ignore
|
ws = ignore
|
||||||
*multiLine = true
|
*multiLine = true
|
||||||
prevBreak = 0
|
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
|
// lines are broken using newlines so comments remain aligned
|
||||||
// unless forceFF is set or there are multiple expressions on
|
// unless forceFF is set or there are multiple expressions on
|
||||||
// the same line in which case formfeed is used
|
// 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
|
ws = ignore
|
||||||
*multiLine = true
|
*multiLine = true
|
||||||
prevBreak = i
|
prevBreak = i
|
||||||
|
10
src/pkg/go/printer/testdata/expressions.golden
vendored
10
src/pkg/go/printer/testdata/expressions.golden
vendored
@ -619,3 +619,13 @@ func _() {
|
|||||||
b.(T).
|
b.(T).
|
||||||
c
|
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)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
10
src/pkg/go/printer/testdata/expressions.input
vendored
10
src/pkg/go/printer/testdata/expressions.input
vendored
@ -625,3 +625,13 @@ baz()
|
|||||||
(T).
|
(T).
|
||||||
c
|
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)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
10
src/pkg/go/printer/testdata/expressions.raw
vendored
10
src/pkg/go/printer/testdata/expressions.raw
vendored
@ -618,3 +618,13 @@ func _() {
|
|||||||
b.(T).
|
b.(T).
|
||||||
c
|
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)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user