mirror of
https://github.com/golang/go
synced 2024-11-20 03:24:41 -07:00
go/printer: simplify internal state
No formatting changes. R=rsc CC=golang-dev https://golang.org/cl/4735042
This commit is contained in:
parent
38a53c7ecb
commit
48f598a393
@ -346,11 +346,6 @@ func (p *printer) setLineComment(text string) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (p *printer) fieldList(fields *ast.FieldList, isStruct, isIncomplete bool) {
|
func (p *printer) fieldList(fields *ast.FieldList, isStruct, isIncomplete bool) {
|
||||||
p.nesting++
|
|
||||||
defer func() {
|
|
||||||
p.nesting--
|
|
||||||
}()
|
|
||||||
|
|
||||||
lbrace := fields.Opening
|
lbrace := fields.Opening
|
||||||
list := fields.List
|
list := fields.List
|
||||||
rbrace := fields.Closing
|
rbrace := fields.Closing
|
||||||
@ -1413,11 +1408,6 @@ func (p *printer) funcBody(b *ast.BlockStmt, headerSize int, isLit bool, multiLi
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
p.nesting++
|
|
||||||
defer func() {
|
|
||||||
p.nesting--
|
|
||||||
}()
|
|
||||||
|
|
||||||
if p.isOneLineFunc(b, headerSize) {
|
if p.isOneLineFunc(b, headerSize) {
|
||||||
sep := vtab
|
sep := vtab
|
||||||
if isLit {
|
if isLit {
|
||||||
|
@ -63,7 +63,6 @@ type printer struct {
|
|||||||
errors chan os.Error
|
errors chan os.Error
|
||||||
|
|
||||||
// Current state
|
// Current state
|
||||||
nesting int // nesting level (0: top-level (package scope), >0: functions/decls.)
|
|
||||||
written int // number of bytes written
|
written int // number of bytes written
|
||||||
indent int // current indentation
|
indent int // current indentation
|
||||||
mode pmode // current printer mode
|
mode pmode // current printer mode
|
||||||
@ -123,18 +122,14 @@ func (p *printer) escape(s string) string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// nlines returns the adjusted number of linebreaks given the desired number
|
// nlines returns the adjusted number of linebreaks given the desired number
|
||||||
// of breaks n such that min <= result <= max where max depends on the current
|
// of breaks n such that min <= result <= max.
|
||||||
// nesting level.
|
|
||||||
//
|
//
|
||||||
func (p *printer) nlines(n, min int) int {
|
func (p *printer) nlines(n, min int) int {
|
||||||
if n < min {
|
const max = 2 // max. number of newlines
|
||||||
|
switch {
|
||||||
|
case n < min:
|
||||||
return min
|
return min
|
||||||
}
|
case n > max:
|
||||||
max := 2 // max. number of newlines at the top level (p.nesting == 0)
|
|
||||||
if p.nesting > 0 {
|
|
||||||
max = 2 // max. number of newlines everywhere else
|
|
||||||
}
|
|
||||||
if n > max {
|
|
||||||
return max
|
return max
|
||||||
}
|
}
|
||||||
return n
|
return n
|
||||||
@ -961,11 +956,9 @@ func (cfg *Config) fprint(output io.Writer, fset *token.FileSet, node interface{
|
|||||||
go func() {
|
go func() {
|
||||||
switch n := node.(type) {
|
switch n := node.(type) {
|
||||||
case ast.Expr:
|
case ast.Expr:
|
||||||
p.nesting = 1
|
|
||||||
p.useNodeComments = true
|
p.useNodeComments = true
|
||||||
p.expr(n, ignoreMultiLine)
|
p.expr(n, ignoreMultiLine)
|
||||||
case ast.Stmt:
|
case ast.Stmt:
|
||||||
p.nesting = 1
|
|
||||||
p.useNodeComments = true
|
p.useNodeComments = true
|
||||||
// A labeled statement will un-indent to position the
|
// A labeled statement will un-indent to position the
|
||||||
// label. Set indent to 1 so we don't get indent "underflow".
|
// label. Set indent to 1 so we don't get indent "underflow".
|
||||||
@ -974,15 +967,12 @@ func (cfg *Config) fprint(output io.Writer, fset *token.FileSet, node interface{
|
|||||||
}
|
}
|
||||||
p.stmt(n, false, ignoreMultiLine)
|
p.stmt(n, false, ignoreMultiLine)
|
||||||
case ast.Decl:
|
case ast.Decl:
|
||||||
p.nesting = 1
|
|
||||||
p.useNodeComments = true
|
p.useNodeComments = true
|
||||||
p.decl(n, ignoreMultiLine)
|
p.decl(n, ignoreMultiLine)
|
||||||
case ast.Spec:
|
case ast.Spec:
|
||||||
p.nesting = 1
|
|
||||||
p.useNodeComments = true
|
p.useNodeComments = true
|
||||||
p.spec(n, 1, false, ignoreMultiLine)
|
p.spec(n, 1, false, ignoreMultiLine)
|
||||||
case *ast.File:
|
case *ast.File:
|
||||||
p.nesting = 0
|
|
||||||
p.comments = n.Comments
|
p.comments = n.Comments
|
||||||
p.useNodeComments = n.Comments == nil
|
p.useNodeComments = n.Comments == nil
|
||||||
p.file(n)
|
p.file(n)
|
||||||
|
Loading…
Reference in New Issue
Block a user