1
0
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:
Robert Griesemer 2011-07-14 16:09:15 -07:00
parent 38a53c7ecb
commit 48f598a393
2 changed files with 5 additions and 25 deletions

View File

@ -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 {

View File

@ -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)