mirror of
https://github.com/golang/go
synced 2024-11-22 02:44:39 -07:00
go/printer: preserve newlines in func parameter lists
Fixes #1179. R=gri CC=golang-dev https://golang.org/cl/3225042
This commit is contained in:
parent
4f8526223f
commit
b88b38ac12
@ -92,7 +92,7 @@ const (
|
|||||||
|
|
||||||
|
|
||||||
// Sets multiLine to true if the identifier list spans multiple lines.
|
// Sets multiLine to true if the identifier list spans multiple lines.
|
||||||
// If ident is set, a multi-line identifier list is indented after the
|
// If indent is set, a multi-line identifier list is indented after the
|
||||||
// first linebreak encountered.
|
// first linebreak encountered.
|
||||||
func (p *printer) identList(list []*ast.Ident, indent bool, multiLine *bool) {
|
func (p *printer) identList(list []*ast.Ident, indent bool, multiLine *bool) {
|
||||||
// convert into an expression list so we can re-use exprList formatting
|
// convert into an expression list so we can re-use exprList formatting
|
||||||
@ -298,15 +298,27 @@ func (p *printer) exprList(prev token.Position, list []ast.Expr, depth int, mode
|
|||||||
func (p *printer) parameters(fields *ast.FieldList, multiLine *bool) {
|
func (p *printer) parameters(fields *ast.FieldList, multiLine *bool) {
|
||||||
p.print(fields.Opening, token.LPAREN)
|
p.print(fields.Opening, token.LPAREN)
|
||||||
if len(fields.List) > 0 {
|
if len(fields.List) > 0 {
|
||||||
|
var prevLine, line int
|
||||||
for i, par := range fields.List {
|
for i, par := range fields.List {
|
||||||
if i > 0 {
|
if i > 0 {
|
||||||
p.print(token.COMMA, blank)
|
p.print(token.COMMA)
|
||||||
|
if len(par.Names) > 0 {
|
||||||
|
line = par.Names[0].Pos().Line
|
||||||
|
} else {
|
||||||
|
line = par.Type.Pos().Line
|
||||||
|
}
|
||||||
|
if 0 < prevLine && prevLine < line && p.linebreak(line, 0, ignore, true) {
|
||||||
|
*multiLine = true
|
||||||
|
} else {
|
||||||
|
p.print(blank)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if len(par.Names) > 0 {
|
if len(par.Names) > 0 {
|
||||||
p.identList(par.Names, false, multiLine)
|
p.identList(par.Names, false, multiLine)
|
||||||
p.print(blank)
|
p.print(blank)
|
||||||
}
|
}
|
||||||
p.expr(par.Type, multiLine)
|
p.expr(par.Type, multiLine)
|
||||||
|
prevLine = par.Type.Pos().Line
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
p.print(fields.Closing, token.RPAREN)
|
p.print(fields.Closing, token.RPAREN)
|
||||||
|
57
src/pkg/go/printer/testdata/declarations.golden
vendored
57
src/pkg/go/printer/testdata/declarations.golden
vendored
@ -656,3 +656,60 @@ func _(x ...func())
|
|||||||
func _(x ...func(...int))
|
func _(x ...func(...int))
|
||||||
func _(x ...map[string]int)
|
func _(x ...map[string]int)
|
||||||
func _(x ...chan int)
|
func _(x ...chan int)
|
||||||
|
|
||||||
|
|
||||||
|
// these parameter lists must remain multi-line since they are multi-line in the source
|
||||||
|
func _(bool,
|
||||||
|
int) {
|
||||||
|
}
|
||||||
|
func _(x bool,
|
||||||
|
y int) {
|
||||||
|
}
|
||||||
|
func _(x,
|
||||||
|
y bool) {
|
||||||
|
}
|
||||||
|
func _(bool, // comment
|
||||||
|
int) {
|
||||||
|
}
|
||||||
|
func _(x bool, // comment
|
||||||
|
y int) {
|
||||||
|
}
|
||||||
|
func _(x, // comment
|
||||||
|
y bool) {
|
||||||
|
}
|
||||||
|
func _(bool, // comment
|
||||||
|
// comment
|
||||||
|
int) {
|
||||||
|
}
|
||||||
|
func _(x bool, // comment
|
||||||
|
// comment
|
||||||
|
y int) {
|
||||||
|
}
|
||||||
|
func _(x, // comment
|
||||||
|
// comment
|
||||||
|
y bool) {
|
||||||
|
}
|
||||||
|
func _(bool,
|
||||||
|
// comment
|
||||||
|
int) {
|
||||||
|
}
|
||||||
|
func _(x bool,
|
||||||
|
// comment
|
||||||
|
y int) {
|
||||||
|
}
|
||||||
|
func _(x,
|
||||||
|
// comment
|
||||||
|
y bool) {
|
||||||
|
}
|
||||||
|
func _(x, // comment
|
||||||
|
y, // comment
|
||||||
|
z bool) {
|
||||||
|
}
|
||||||
|
func _(x, // comment
|
||||||
|
y, // comment
|
||||||
|
z bool) {
|
||||||
|
}
|
||||||
|
func _(x int, // comment
|
||||||
|
y float, // comment
|
||||||
|
z bool) {
|
||||||
|
}
|
||||||
|
57
src/pkg/go/printer/testdata/declarations.input
vendored
57
src/pkg/go/printer/testdata/declarations.input
vendored
@ -644,3 +644,60 @@ func _(x ...func())
|
|||||||
func _(x ...func(...int))
|
func _(x ...func(...int))
|
||||||
func _(x ...map[string]int)
|
func _(x ...map[string]int)
|
||||||
func _(x ...chan int)
|
func _(x ...chan int)
|
||||||
|
|
||||||
|
|
||||||
|
// these parameter lists must remain multi-line since they are multi-line in the source
|
||||||
|
func _(bool,
|
||||||
|
int) {
|
||||||
|
}
|
||||||
|
func _(x bool,
|
||||||
|
y int) {
|
||||||
|
}
|
||||||
|
func _(x,
|
||||||
|
y bool) {
|
||||||
|
}
|
||||||
|
func _(bool, // comment
|
||||||
|
int) {
|
||||||
|
}
|
||||||
|
func _(x bool, // comment
|
||||||
|
y int) {
|
||||||
|
}
|
||||||
|
func _(x, // comment
|
||||||
|
y bool) {
|
||||||
|
}
|
||||||
|
func _(bool, // comment
|
||||||
|
// comment
|
||||||
|
int) {
|
||||||
|
}
|
||||||
|
func _(x bool, // comment
|
||||||
|
// comment
|
||||||
|
y int) {
|
||||||
|
}
|
||||||
|
func _(x, // comment
|
||||||
|
// comment
|
||||||
|
y bool) {
|
||||||
|
}
|
||||||
|
func _(bool,
|
||||||
|
// comment
|
||||||
|
int) {
|
||||||
|
}
|
||||||
|
func _(x bool,
|
||||||
|
// comment
|
||||||
|
y int) {
|
||||||
|
}
|
||||||
|
func _(x,
|
||||||
|
// comment
|
||||||
|
y bool) {
|
||||||
|
}
|
||||||
|
func _(x, // comment
|
||||||
|
y,// comment
|
||||||
|
z bool) {
|
||||||
|
}
|
||||||
|
func _(x, // comment
|
||||||
|
y,// comment
|
||||||
|
z bool) {
|
||||||
|
}
|
||||||
|
func _(x int, // comment
|
||||||
|
y float, // comment
|
||||||
|
z bool) {
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user