1
0
mirror of https://github.com/golang/go synced 2024-11-21 19:54:41 -07:00

gofmt: fix alignment of multi-line var declarations

- gofmt -w src misc

R=rsc, r
CC=golang-dev
https://golang.org/cl/223101
This commit is contained in:
Robert Griesemer 2010-03-02 17:23:07 -08:00
parent e678afa891
commit 305f5433f3
6 changed files with 82 additions and 34 deletions

View File

@ -795,11 +795,11 @@ func readTemplate(name string) *template.Template {
var (
dirlistHTML,
errorHTML,
godocHTML,
packageHTML,
packageText,
searchHTML *template.Template
errorHTML,
godocHTML,
packageHTML,
packageText,
searchHTML *template.Template
)
func readTemplates() {

View File

@ -214,7 +214,7 @@ type runtimeValues struct {
String, Slice, Eface *remoteType
// Runtime type structures
Type, CommonType, UncommonType, StructField, StructType, PtrType,
ArrayType, SliceType *remoteType
ArrayType, SliceType *remoteType
// Runtime scheduler structures
Stktop, Gobuf, G *remoteType
// Addresses of *runtime.XType types. These are the
@ -222,12 +222,12 @@ type runtimeValues struct {
// reflection to fill these in from the remote symbol table,
// so the names must match the runtime names.
PBoolType,
PUint8Type, PUint16Type, PUint32Type, PUint64Type, PUintType, PUintptrType,
PInt8Type, PInt16Type, PInt32Type, PInt64Type, PIntType,
PFloat32Type, PFloat64Type, PFloatType,
PArrayType, PStringType, PStructType, PPtrType, PFuncType,
PInterfaceType, PSliceType, PMapType, PChanType,
PDotDotDotType, PUnsafePointerType proc.Word
PUint8Type, PUint16Type, PUint32Type, PUint64Type, PUintType, PUintptrType,
PInt8Type, PInt16Type, PInt32Type, PInt64Type, PIntType,
PFloat32Type, PFloat64Type, PFloatType,
PArrayType, PStringType, PStructType, PPtrType, PFuncType,
PInterfaceType, PSliceType, PMapType, PChanType,
PDotDotDotType, PUnsafePointerType proc.Word
// G status values
runtimeGStatus
}

View File

@ -81,17 +81,6 @@ func (p *printer) setComment(g *ast.CommentGroup) {
}
// Sets multiLine to true if the identifier list spans multiple lines.
func (p *printer) identList(list []*ast.Ident, multiLine *bool) {
// convert into an expression list so we can re-use exprList formatting
xlist := make([]ast.Expr, len(list))
for i, x := range list {
xlist[i] = x
}
p.exprList(noPos, xlist, 1, commaSep, multiLine, noPos)
}
type exprListMode uint
const (
@ -103,6 +92,23 @@ const (
)
// Sets multiLine to true if the identifier list spans multiple lines.
// If ident is set, a multi-line identifier list is indented after the
// first linebreak encountered.
func (p *printer) identList(list []*ast.Ident, indent bool, multiLine *bool) {
// convert into an expression list so we can re-use exprList formatting
xlist := make([]ast.Expr, len(list))
for i, x := range list {
xlist[i] = x
}
mode := commaSep
if !indent {
mode |= noIndent
}
p.exprList(noPos, xlist, 1, mode, multiLine, noPos)
}
// isOneLineExpr returns true if x is "small enough" to fit onto a single line.
func (p *printer) isOneLineExpr(x ast.Expr) bool {
const maxSize = 60 // aproximate value, excluding space for comments
@ -238,7 +244,7 @@ func (p *printer) parameters(fields *ast.FieldList, multiLine *bool) {
p.print(token.COMMA, blank)
}
if len(par.Names) > 0 {
p.identList(par.Names, multiLine)
p.identList(par.Names, false, multiLine)
p.print(blank)
}
p.expr(par.Type, multiLine)
@ -352,7 +358,7 @@ func (p *printer) fieldList(fields *ast.FieldList, isIncomplete bool, ctxt exprC
p.setComment(f.Doc)
if len(f.Names) > 0 {
// named fields
p.identList(f.Names, &ml)
p.identList(f.Names, false, &ml)
p.print(sep)
p.expr(f.Type, &ml)
extraTabs = 1
@ -1040,10 +1046,11 @@ const (
// The parameter n is the number of specs in the group; context specifies
// the surroundings of the declaration. Separating semicolons are printed
// depending on the context. Sets multiLine to true if the spec spans
// multiple lines.
// depending on the context. If indent is set, a multi-line identifier lists
// in the spec are indented when the first linebreak is encountered. Sets
// multiLine to true if the spec spans multiple lines.
//
func (p *printer) spec(spec ast.Spec, n int, context declContext, multiLine *bool) {
func (p *printer) spec(spec ast.Spec, n int, context declContext, indent bool, multiLine *bool) {
var (
comment *ast.CommentGroup // a line comment, if any
extraTabs int // number of extra tabs before comment, if any
@ -1061,7 +1068,7 @@ func (p *printer) spec(spec ast.Spec, n int, context declContext, multiLine *boo
case *ast.ValueSpec:
p.setComment(s.Doc)
p.identList(s.Names, multiLine) // always present
p.identList(s.Names, indent, multiLine) // always present
if n == 1 {
if s.Type != nil {
p.print(blank)
@ -1129,7 +1136,7 @@ func (p *printer) genDecl(d *ast.GenDecl, context declContext, multiLine *bool)
p.linebreak(s.Pos().Line, 1, 2, ignore, ml)
}
ml = false
p.spec(s, len(d.Specs), inGroup, &ml)
p.spec(s, len(d.Specs), inGroup, false, &ml)
}
p.print(unindent, formfeed)
*multiLine = true
@ -1138,7 +1145,7 @@ func (p *printer) genDecl(d *ast.GenDecl, context declContext, multiLine *bool)
} else {
// single declaration
p.spec(d.Specs[0], 1, context, multiLine)
p.spec(d.Specs[0], 1, context, true, multiLine)
}
}

View File

@ -411,6 +411,14 @@ type _ struct {
h float "tag" // comment
}
type _ struct {
a, b,
c, d int // this line should be indented
u, v, w, x float // this line should be indented
p, q,
r, s float // this line should be indented
}
// difficult cases
type _ struct {
@ -444,6 +452,7 @@ type _ interface { // this comment must not change indentation
gggggggggggg(x, y, z int) // hurray
}
// formatting of variable declarations
func _() {
type day struct {
@ -462,6 +471,19 @@ func _() {
}
// formatting of multi-line variable declarations
var a1, b1, c1 int // all on one line
var a2, b2,
c2 int // this line should be indented
var (
a3, b3,
c3, d3 int // this line should be indented
a4, b4, c4 int // this line should be indented
)
func _() {
var privateKey2 = &Block{Type: "RSA PRIVATE KEY",
Headers: map[string]string{},

View File

@ -410,6 +410,13 @@ type _ struct {
h float "tag" // comment
}
type _ struct { a, b,
c, d int // this line should be indented
u, v, w, x float // this line should be indented
p, q,
r, s float // this line should be indented
}
// difficult cases
type _ struct {
@ -418,7 +425,6 @@ type _ struct {
}
// formatting of interfaces
type EI interface{}
@ -444,6 +450,7 @@ type _ interface { // this comment must not change indentation
gggggggggggg(x, y, z int) () // hurray
}
// formatting of variable declarations
func _() {
type day struct { n int; short, long string }
@ -459,6 +466,18 @@ func _() {
}
// formatting of multi-line variable declarations
var a1, b1, c1 int // all on one line
var a2, b2,
c2 int // this line should be indented
var (a3, b3,
c3, d3 int // this line should be indented
a4, b4, c4 int // this line should be indented
)
func _() {
var privateKey2 = &Block{Type: "RSA PRIVATE KEY",
Headers: map[string]string{},

View File

@ -17,9 +17,9 @@ import (
)
var respExcludeHeader = map[string]int{
"Content-Length": 0,
"Content-Length": 0,
"Transfer-Encoding": 0,
"Trailer": 0,
"Trailer": 0,
}
// Response represents the response from an HTTP request.