]> Cypherpunks repositories - gostls13.git/commitdiff
Remove -oldprinter flag from gofmt; all code is
authorRobert Griesemer <gri@golang.org>
Mon, 11 Jan 2010 20:58:13 +0000 (12:58 -0800)
committerRobert Griesemer <gri@golang.org>
Mon, 11 Jan 2010 20:58:13 +0000 (12:58 -0800)
now printed using the semicolon-free style.

Removed NoSemis flag and mechanism dealing with
optional semicolons from go/printer.

Updated all go/printer output files using the
semi-colon free style.

Changes have no formatting impact on checked in
go code under src and misc.

R=rsc, r
CC=golang-dev
https://golang.org/cl/184068

src/cmd/godoc/godoc.go
src/cmd/gofmt/gofmt.go
src/pkg/go/printer/nodes.go
src/pkg/go/printer/printer.go
src/pkg/go/printer/testdata/comments.golden
src/pkg/go/printer/testdata/comments.x
src/pkg/go/printer/testdata/declarations.golden
src/pkg/go/printer/testdata/expressions.golden
src/pkg/go/printer/testdata/expressions.raw
src/pkg/go/printer/testdata/linebreaks.golden
src/pkg/go/printer/testdata/statements.golden

index e760d22307cb6269abac6d4b5c725784564f9f86..09b110cabaab3402662f178c439da4560348840a 100644 (file)
@@ -530,7 +530,7 @@ func (p *tconv) Write(data []byte) (n int, err os.Error) {
 
 // Write an AST-node to w; optionally html-escaped.
 func writeNode(w io.Writer, node interface{}, html bool, styler printer.Styler) {
-       mode := printer.TabIndent | printer.UseSpaces | printer.NoSemis
+       mode := printer.TabIndent | printer.UseSpaces
        if html {
                mode |= printer.GenHTML
        }
index ee3147d4f99870351d739ccfbf1f2c38e4864ccd..c26ef3dec1618128b3253e4f4e93bf2d966dec35 100644 (file)
@@ -36,8 +36,7 @@ var (
        useSpaces = flag.Bool("spaces", true, "align with spaces instead of tabs")
 
        // semicolon transition
-       useOldParser  = flag.Bool("oldparser", false, "parse old syntax (required semicolons)")
-       useOldPrinter = flag.Bool("oldprinter", false, "print old syntax (required semicolons)")
+       useOldParser = flag.Bool("oldparser", false, "parse old syntax (required semicolons)")
 )
 
 
@@ -81,9 +80,6 @@ func initPrinterMode() {
        if *useSpaces {
                printerMode |= printer.UseSpaces
        }
-       if !*useOldPrinter {
-               printerMode |= printer.NoSemis
-       }
 }
 
 
index d5a3be9b0d8123483468752ecf520b5fbe502523..226e34572ed5c5d17cba18febad74c6199c3ae56 100644 (file)
@@ -282,9 +282,8 @@ func (p *printer) parameters(list []*ast.Field, multiLine *bool) {
 }
 
 
-// Returns true if a separating semicolon is optional.
 // Sets multiLine to true if the signature spans multiple lines.
-func (p *printer) signature(params, result []*ast.Field, multiLine *bool) (optSemi bool) {
+func (p *printer) signature(params, result []*ast.Field, multiLine *bool) {
        p.parameters(params, multiLine)
        if result != nil {
                p.print(blank)
@@ -293,7 +292,7 @@ func (p *printer) signature(params, result []*ast.Field, multiLine *bool) (optSe
                        // single anonymous result; no ()'s unless it's a function type
                        f := result[0]
                        if _, isFtyp := f.Type.(*ast.FuncType); !isFtyp {
-                               optSemi = p.expr(f.Type, multiLine)
+                               p.expr(f.Type, multiLine)
                                return
                        }
                }
@@ -400,9 +399,6 @@ func (p *printer) fieldList(lbrace token.Position, list []*ast.Field, rbrace tok
                                p.expr(&ast.StringList{f.Tag}, &ml)
                                extraTabs = 0
                        }
-                       if p.Mode&NoSemis == 0 {
-                               p.print(token.SEMICOLON)
-                       }
                        if f.Comment != nil {
                                for ; extraTabs > 0; extraTabs-- {
                                        p.print(vtab)
@@ -435,9 +431,6 @@ func (p *printer) fieldList(lbrace token.Position, list []*ast.Field, rbrace tok
                                // embedded interface
                                p.expr(f.Type, &ml)
                        }
-                       if p.Mode&NoSemis == 0 {
-                               p.print(token.SEMICOLON)
-                       }
                        p.lineComment(f.Comment)
                }
                if isIncomplete {
@@ -630,9 +623,8 @@ func isBinary(expr ast.Expr) bool {
 }
 
 
-// Returns true if a separating semicolon is optional.
 // Sets multiLine to true if the expression spans multiple lines.
-func (p *printer) expr1(expr ast.Expr, prec1, depth int, ctxt exprContext, multiLine *bool) (optSemi bool) {
+func (p *printer) expr1(expr ast.Expr, prec1, depth int, ctxt exprContext, multiLine *bool) {
        p.print(expr.Pos())
 
        switch x := expr.(type) {
@@ -660,12 +652,12 @@ func (p *printer) expr1(expr ast.Expr, prec1, depth int, ctxt exprContext, multi
                        // parenthesis needed
                        p.print(token.LPAREN)
                        p.print(token.MUL)
-                       optSemi = p.expr(x.X, multiLine)
+                       p.expr(x.X, multiLine)
                        p.print(token.RPAREN)
                } else {
                        // no parenthesis needed
                        p.print(token.MUL)
-                       optSemi = p.expr(x.X, multiLine)
+                       p.expr(x.X, multiLine)
                }
 
        case *ast.UnaryExpr:
@@ -743,11 +735,7 @@ func (p *printer) expr1(expr ast.Expr, prec1, depth int, ctxt exprContext, multi
                }
                p.expr1(x.Fun, token.HighestPrec, depth, 0, multiLine)
                p.print(x.Lparen, token.LPAREN)
-               mode := commaSep
-               if p.Mode&NoSemis != 0 {
-                       mode |= commaTerm
-               }
-               p.exprList(x.Lparen, x.Args, depth, mode, multiLine, x.Rparen)
+               p.exprList(x.Lparen, x.Args, depth, commaSep|commaTerm, multiLine, x.Rparen)
                p.print(x.Rparen, token.RPAREN)
 
        case *ast.CompositeLit:
@@ -778,27 +766,25 @@ func (p *printer) expr1(expr ast.Expr, prec1, depth int, ctxt exprContext, multi
                        p.expr(x.Len, multiLine)
                }
                p.print(token.RBRACK)
-               optSemi = p.expr(x.Elt, multiLine)
+               p.expr(x.Elt, multiLine)
 
        case *ast.StructType:
                p.print(token.STRUCT)
                p.fieldList(x.Lbrace, x.Fields, x.Rbrace, x.Incomplete, ctxt|structType)
-               optSemi = true
 
        case *ast.FuncType:
                p.print(token.FUNC)
-               optSemi = p.signature(x.Params, x.Results, multiLine)
+               p.signature(x.Params, x.Results, multiLine)
 
        case *ast.InterfaceType:
                p.print(token.INTERFACE)
                p.fieldList(x.Lbrace, x.Methods, x.Rbrace, x.Incomplete, ctxt)
-               optSemi = true
 
        case *ast.MapType:
                p.print(token.MAP, token.LBRACK)
                p.expr(x.Key, multiLine)
                p.print(token.RBRACK)
-               optSemi = p.expr(x.Value, multiLine)
+               p.expr(x.Value, multiLine)
 
        case *ast.ChanType:
                switch x.Dir {
@@ -810,7 +796,7 @@ func (p *printer) expr1(expr ast.Expr, prec1, depth int, ctxt exprContext, multi
                        p.print(token.CHAN, token.ARROW)
                }
                p.print(blank)
-               optSemi = p.expr(x.Value, multiLine)
+               p.expr(x.Value, multiLine)
 
        default:
                panic("unreachable")
@@ -820,16 +806,15 @@ func (p *printer) expr1(expr ast.Expr, prec1, depth int, ctxt exprContext, multi
 }
 
 
-func (p *printer) expr0(x ast.Expr, depth int, multiLine *bool) (optSemi bool) {
-       return p.expr1(x, token.LowestPrec, depth, 0, multiLine)
+func (p *printer) expr0(x ast.Expr, depth int, multiLine *bool) {
+       p.expr1(x, token.LowestPrec, depth, 0, multiLine)
 }
 
 
-// Returns true if a separating semicolon is optional.
 // Sets multiLine to true if the expression spans multiple lines.
-func (p *printer) expr(x ast.Expr, multiLine *bool) (optSemi bool) {
+func (p *printer) expr(x ast.Expr, multiLine *bool) {
        const depth = 1
-       return p.expr1(x, token.LowestPrec, depth, 0, multiLine)
+       p.expr1(x, token.LowestPrec, depth, 0, multiLine)
 }
 
 
@@ -852,9 +837,7 @@ func (p *printer) stmtList(list []ast.Stmt, _indent int) {
                // in those cases each clause is a new section
                p.linebreak(s.Pos().Line, 1, maxStmtNewlines, ignore, i == 0 || _indent == 0 || multiLine)
                multiLine = false
-               if !p.stmt(s, &multiLine) && len(list) > 1 && p.Mode&NoSemis == 0 {
-                       p.print(token.SEMICOLON)
-               }
+               p.stmt(s, &multiLine)
        }
        if _indent > 0 {
                p.print(unindent)
@@ -933,9 +916,8 @@ func (p *printer) controlClause(isForStmt bool, init ast.Stmt, expr ast.Expr, po
 }
 
 
-// Returns true if a separating semicolon is optional.
 // Sets multiLine to true if the statements spans multiple lines.
-func (p *printer) stmt(stmt ast.Stmt, multiLine *bool) (optSemi bool) {
+func (p *printer) stmt(stmt ast.Stmt, multiLine *bool) {
        p.print(stmt.Pos())
 
        switch s := stmt.(type) {
@@ -944,7 +926,6 @@ func (p *printer) stmt(stmt ast.Stmt, multiLine *bool) (optSemi bool) {
 
        case *ast.DeclStmt:
                p.decl(s.Decl, inStmtList, multiLine)
-               optSemi = true // decl prints terminating semicolon if necessary
 
        case *ast.EmptyStmt:
                // nothing to do
@@ -957,7 +938,7 @@ func (p *printer) stmt(stmt ast.Stmt, multiLine *bool) (optSemi bool) {
                p.expr(s.Label, multiLine)
                p.print(token.COLON, vtab, indent)
                p.linebreak(s.Stmt.Pos().Line, 0, 1, ignore, true)
-               optSemi = p.stmt(s.Stmt, multiLine)
+               p.stmt(s.Stmt, multiLine)
 
        case *ast.ExprStmt:
                const depth = 1
@@ -1001,19 +982,17 @@ func (p *printer) stmt(stmt ast.Stmt, multiLine *bool) (optSemi bool) {
        case *ast.BlockStmt:
                p.block(s, 1, false)
                *multiLine = true
-               optSemi = true
 
        case *ast.IfStmt:
                p.print(token.IF)
                p.controlClause(false, s.Init, s.Cond, nil)
                p.block(s.Body, 1, true)
                *multiLine = true
-               optSemi = true
                if s.Else != nil {
                        p.print(blank, token.ELSE, blank)
                        switch s.Else.(type) {
                        case *ast.BlockStmt, *ast.IfStmt:
-                               optSemi = p.stmt(s.Else, ignoreMultiLine)
+                               p.stmt(s.Else, ignoreMultiLine)
                        default:
                                p.print(token.LBRACE, indent, formfeed)
                                p.stmt(s.Else, ignoreMultiLine)
@@ -1030,14 +1009,12 @@ func (p *printer) stmt(stmt ast.Stmt, multiLine *bool) (optSemi bool) {
                }
                p.print(s.Colon, token.COLON)
                p.stmtList(s.Body, 1)
-               optSemi = true // "block" without {}'s
 
        case *ast.SwitchStmt:
                p.print(token.SWITCH)
                p.controlClause(false, s.Init, s.Tag, nil)
                p.block(s.Body, 0, true)
                *multiLine = true
-               optSemi = true
 
        case *ast.TypeCaseClause:
                if s.Types != nil {
@@ -1048,7 +1025,6 @@ func (p *printer) stmt(stmt ast.Stmt, multiLine *bool) (optSemi bool) {
                }
                p.print(s.Colon, token.COLON)
                p.stmtList(s.Body, 1)
-               optSemi = true // "block" without {}'s
 
        case *ast.TypeSwitchStmt:
                p.print(token.SWITCH)
@@ -1062,7 +1038,6 @@ func (p *printer) stmt(stmt ast.Stmt, multiLine *bool) (optSemi bool) {
                p.print(blank)
                p.block(s.Body, 0, true)
                *multiLine = true
-               optSemi = true
 
        case *ast.CommClause:
                if s.Rhs != nil {
@@ -1077,20 +1052,17 @@ func (p *printer) stmt(stmt ast.Stmt, multiLine *bool) (optSemi bool) {
                }
                p.print(s.Colon, token.COLON)
                p.stmtList(s.Body, 1)
-               optSemi = true // "block" without {}'s
 
        case *ast.SelectStmt:
                p.print(token.SELECT, blank)
                p.block(s.Body, 0, false)
                *multiLine = true
-               optSemi = true
 
        case *ast.ForStmt:
                p.print(token.FOR)
                p.controlClause(true, s.Init, s.Cond, s.Post)
                p.block(s.Body, 1, true)
                *multiLine = true
-               optSemi = true
 
        case *ast.RangeStmt:
                p.print(token.FOR, blank)
@@ -1104,7 +1076,6 @@ func (p *printer) stmt(stmt ast.Stmt, multiLine *bool) (optSemi bool) {
                p.print(blank)
                p.block(s.Body, 1, true)
                *multiLine = true
-               optSemi = true
 
        default:
                panic("unreachable")
@@ -1132,7 +1103,6 @@ const (
 //
 func (p *printer) spec(spec ast.Spec, n int, context declContext, multiLine *bool) {
        var (
-               optSemi   bool              // true if a semicolon is optional
                comment   *ast.CommentGroup // a line comment, if any
                extraTabs int               // number of extra tabs before comment, if any
        )
@@ -1159,12 +1129,11 @@ func (p *printer) spec(spec ast.Spec, n int, context declContext, multiLine *boo
                if n == 1 {
                        if s.Type != nil {
                                p.print(blank)
-                               optSemi = p.expr(s.Type, multiLine)
+                               p.expr(s.Type, multiLine)
                        }
                        if s.Values != nil {
                                p.print(blank, token.ASSIGN)
                                p.exprList(noPos, s.Values, 1, blankStart|commaSep, multiLine, noPos)
-                               optSemi = false
                        }
                } else {
                        extraTabs = 2
@@ -1172,14 +1141,13 @@ func (p *printer) spec(spec ast.Spec, n int, context declContext, multiLine *boo
                                p.print(vtab)
                        }
                        if s.Type != nil {
-                               optSemi = p.expr(s.Type, multiLine)
+                               p.expr(s.Type, multiLine)
                                extraTabs = 1
                        }
                        if s.Values != nil {
                                p.print(vtab)
                                p.print(token.ASSIGN)
                                p.exprList(noPos, s.Values, 1, blankStart|commaSep, multiLine, noPos)
-                               optSemi = false
                                extraTabs = 0
                        }
                }
@@ -1194,17 +1162,13 @@ func (p *printer) spec(spec ast.Spec, n int, context declContext, multiLine *boo
                } else {
                        p.print(vtab)
                }
-               optSemi = p.expr(s.Type, multiLine)
+               p.expr(s.Type, multiLine)
                comment = s.Comment
 
        default:
                panic("unreachable")
        }
 
-       if (context == inGroup || context == inStmtList && !optSemi) && p.Mode&NoSemis == 0 {
-               p.print(token.SEMICOLON)
-       }
-
        if comment != nil {
                for ; extraTabs > 0; extraTabs-- {
                        p.print(vtab)
index 16f61cd0806325f6f56145a80d04b11e2c7a84f1..9e82003564c735a04f74beec5ea7e4898ecc2350 100644 (file)
@@ -894,7 +894,6 @@ const (
        RawFormat      // do not use a tabwriter; if set, UseSpaces is ignored
        TabIndent      // use tabs for indentation independent of UseSpaces
        UseSpaces      // use spaces instead of tabs for alignment
-       NoSemis        // don't print semicolons at the end of a line
 )
 
 
index 04f87a6c4610ac7496fc2428a5187067bb2799ea..741500c621bc4e8a486019051bab5adf8f4b7fa2 100644 (file)
@@ -10,8 +10,8 @@ import "fmt"  // fmt
 
 const c0 = 0   // zero
 const (
-       c1      = iota; // c1
-       c2;     // c2
+       c1      = iota  // c1
+       c2      // c2
 )
 
 
@@ -20,21 +20,21 @@ type SZ struct{}
 
 // The S0 struct; no field is exported.
 type S0 struct {
-       int;
-       x, y, z int;    // 3 unexported fields
+       int
+       x, y, z int     // 3 unexported fields
 }
 
 // The S1 struct; some fields are not exported.
 type S1 struct {
-       S0;
-       A, B, C float;  // 3 exported fields
-       D, b, c int;    // 2 unexported fields
+       S0
+       A, B, C float   // 3 exported fields
+       D, b, c int     // 2 unexported fields
 }
 
 // The S2 struct; all fields are exported.
 type S2 struct {
-       S1;
-       A, B, C float;  // 3 exported fields
+       S1
+       A, B, C float   // 3 exported fields
 }
 
 // The IZ interface; it is empty.
@@ -42,21 +42,21 @@ type SZ interface{}
 
 // The I0 interface; no method is exported.
 type I0 interface {
-       f(x int) int;   // unexported method
+       f(x int) int    // unexported method
 }
 
 // The I1 interface; some methods are not exported.
 type I1 interface {
-       I0;
-       F(x float) float;       // exported methods
-       g(x int) int;           // unexported method
+       I0
+       F(x float) float        // exported methods
+       g(x int) int            // unexported method
 }
 
 // The I2 interface; all methods are exported.
 type I2 interface {
-       I0;
-       F(x float) float;       // exported method
-       G(x float) float;       // exported method
+       I0
+       F(x float) float        // exported method
+       G(x float) float        // exported method
 }
 
 // This comment group should be separated
@@ -71,23 +71,23 @@ var ()
 
 // This comment SHOULD be associated with the next declaration.
 func f0() {
-       const pi = 3.14;        // pi
-       var s1 struct{}         /* an empty struct */   /* foo */
+       const pi = 3.14 // pi
+       var s1 struct{} /* an empty struct */   /* foo */
        // a struct constructor
        // --------------------
-       var s2 struct{} = struct{}{};
-       x := pi;
+       var s2 struct{} = struct{}{}
+       x := pi
 }
 //
 // NO SPACE HERE
 //
 func f1() {
-       f0();
+       f0()
        /* 1 */
        // 2
        /* 3 */
        /* 4 */
-       f0();
+       f0()
 }
 
 
@@ -100,7 +100,7 @@ func abs(x int) int {
        if x < 0 {      // the tab printed before this comment's // must not affect the remaining lines
                return -x       // this statement should be properly indented
        }
-       return x;
+       return x
 }
 
 
@@ -283,14 +283,14 @@ func _( /* this */ x /* is */ /* an */ int)       {}
 
 // Line comments with tabs
 func _() {
-       var finput *bufio.Reader;       // input file
-       var stderr *bufio.Writer;
-       var ftable *bufio.Writer;       // y.go file
-       var foutput *bufio.Writer;      // y.output file
-
-       var oflag string;       // -o [y.go]            - y.go file
-       var vflag string;       // -v [y.output]        - y.output file
-       var lflag bool;         // -l                   - disable line directives
+       var finput *bufio.Reader        // input file
+       var stderr *bufio.Writer
+       var ftable *bufio.Writer        // y.go file
+       var foutput *bufio.Writer       // y.output file
+
+       var oflag string        // -o [y.go]            - y.go file
+       var vflag string        // -v [y.output]        - y.output file
+       var lflag bool          // -l                   - disable line directives
 }
 
 
index d10eb2e5604a042e4644c86a9d1d28c6a7c0219f..19fa017bcf8aace3423bc4e333970b9267387af7 100644 (file)
@@ -15,17 +15,17 @@ type S0 struct {
 
 // The S1 struct; some fields are not exported.
 type S1 struct {
-       S0;
-       A, B, C float;  // 3 exported fields
-       D       int;    // 2 unexported fields
+       S0
+       A, B, C float   // 3 exported fields
+       D       int     // 2 unexported fields
        // contains unexported fields
 }
 
 
 // The S2 struct; all fields are exported.
 type S2 struct {
-       S1;
-       A, B, C float;  // 3 exported fields
+       S1
+       A, B, C float   // 3 exported fields
 }
 
 
@@ -41,15 +41,15 @@ type I0 interface {
 
 // The I1 interface; some methods are not exported.
 type I1 interface {
-       I0;
-       F(x float) float;       // exported methods
+       I0
+       F(x float) float        // exported methods
        // contains unexported methods
 }
 
 
 // The I2 interface; all methods are exported.
 type I2 interface {
-       I0;
-       F(x float) float;       // exported method
-       G(x float) float;       // exported method
+       I0
+       F(x float) float        // exported method
+       G(x float) float        // exported method
 }
index 1af6005c538296d3ca173f6efc1a199416c5f1ed..17d8bfaff02ec8e07e55ee65fc9646b6738e74a5 100644 (file)
@@ -7,22 +7,22 @@ package imports
 import "io"
 
 import (
-       _ "io";
+       _ "io"
 )
 
 import _ "io"
 
 import (
-       "io";
-       "io";
-       "io";
+       "io"
+       "io"
+       "io"
 )
 
 import (
-       "io";
-       aLongRename "io";
+       "io"
+       aLongRename "io"
 
-       b "io";
+       b "io"
 )
 
 // no newlines between consecutive single imports, but
@@ -52,17 +52,17 @@ import (
                // a comment
                "bar" +
                "foo" + // a comment
-               "bar";  // a comment
+               "bar"   // a comment
 )
 
 // a case that caused problems in the past (comment placement)
 import (
-       . "fmt";
-       "io";
-       "malloc";       // for the malloc count test only
-       "math";
-       "strings";
-       "testing";
+       . "fmt"
+       "io"
+       "malloc"        // for the malloc count test only
+       "math"
+       "strings"
+       "testing"
 )
 
 
@@ -74,19 +74,19 @@ var _ int
 
 func _() {
        // the following decls need a semicolon at the end
-       type _ int;
-       type _ *int;
-       type _ []int;
-       type _ map[string]int;
-       type _ chan int;
-       type _ func() int;
-
-       var _ int;
-       var _ *int;
-       var _ []int;
-       var _ map[string]int;
-       var _ chan int;
-       var _ func() int;
+       type _ int
+       type _ *int
+       type _ []int
+       type _ map[string]int
+       type _ chan int
+       type _ func() int
+
+       var _ int
+       var _ *int
+       var _ []int
+       var _ map[string]int
+       var _ chan int
+       var _ func() int
 
        // the following decls don't need a semicolon at the end
        type _ struct{}
@@ -121,116 +121,116 @@ func _() {
 
 // don't lose blank lines in grouped declarations
 const (
-       _       int     = 0;
-       _       float   = 1;
+       _       int     = 0
+       _       float   = 1
 
-       _       string  = "foo";
+       _       string  = "foo"
 
-       _       = iota;
-       _;
+       _       = iota
+       _
 
        // a comment
-       _;
+       _
 
-       _;
+       _
 )
 
 
 type (
-       _       int;
-       _       struct{};
+       _       int
+       _       struct{}
 
-       _       interface{};
+       _       interface{}
 
        // a comment
-       _       map[string]int;
+       _       map[string]int
 )
 
 
 var (
-       _       int     = 0;
-       _       float   = 1;
+       _       int     = 0
+       _       float   = 1
 
-       _       string  = "foo";
+       _       string  = "foo"
 
-       _       bool;
+       _       bool
 
        // a comment
-       _       bool;
+       _       bool
 )
 
 
 // don't lose blank lines in this struct
 type _ struct {
        String  struct {
-               Str, Len int;
-       };
+               Str, Len int
+       }
        Slice   struct {
-               Array, Len, Cap int;
-       };
+               Array, Len, Cap int
+       }
        Eface   struct {
-               Typ, Ptr int;
-       };
+               Typ, Ptr int
+       }
 
        UncommonType    struct {
-               Name, PkgPath int;
-       };
+               Name, PkgPath int
+       }
        CommonType      struct {
-               Size, Hash, Alg, Align, FieldAlign, String, UncommonType int;
-       };
+               Size, Hash, Alg, Align, FieldAlign, String, UncommonType int
+       }
        Type    struct {
-               Typ, Ptr int;
-       };
+               Typ, Ptr int
+       }
        StructField     struct {
-               Name, PkgPath, Typ, Tag, Offset int;
-       };
+               Name, PkgPath, Typ, Tag, Offset int
+       }
        StructType      struct {
-               Fields int;
-       };
+               Fields int
+       }
        PtrType struct {
-               Elem int;
-       };
+               Elem int
+       }
        SliceType       struct {
-               Elem int;
-       };
+               Elem int
+       }
        ArrayType       struct {
-               Elem, Len int;
-       };
+               Elem, Len int
+       }
 
        Stktop  struct {
-               Stackguard, Stackbase, Gobuf int;
-       };
+               Stackguard, Stackbase, Gobuf int
+       }
        Gobuf   struct {
-               Sp, Pc, G int;
-       };
+               Sp, Pc, G int
+       }
        G       struct {
-               Stackbase, Sched, Status, Alllink int;
-       };
+               Stackbase, Sched, Status, Alllink int
+       }
 }
 
 
 // no tabs for single or ungrouped decls
 func _() {
-       const xxxxxx = 0;
-       type x int;
-       var xxx int;
-       var yyyy float = 3.14;
-       var zzzzz = "bar";
+       const xxxxxx = 0
+       type x int
+       var xxx int
+       var yyyy float = 3.14
+       var zzzzz = "bar"
 
        const (
-               xxxxxx = 0;
+               xxxxxx = 0
        )
        type (
-               x int;
+               x int
        )
        var (
-               xxx int;
+               xxx int
        )
        var (
-               yyyy float = 3.14;
+               yyyy float = 3.14
        )
        var (
-               zzzzz = "bar";
+               zzzzz = "bar"
        )
 }
 
@@ -238,79 +238,79 @@ func _() {
 func _() {
        // no entry has a type
        const (
-               zzzzzz  = 1;
-               z       = 2;
-               zzz     = 3;
+               zzzzzz  = 1
+               z       = 2
+               zzz     = 3
        )
        // some entries have a type
        const (
-               xxxxxx                  = 1;
-               x                       = 2;
-               xxx                     = 3;
-               yyyyyyyy        float   = iota;
-               yyyy                    = "bar";
-               yyy;
-               yy      = 2;
+               xxxxxx                  = 1
+               x                       = 2
+               xxx                     = 3
+               yyyyyyyy        float   = iota
+               yyyy                    = "bar"
+               yyy
+               yy      = 2
        )
 }
 
 func _() {
        // no entry has a type
        var (
-               zzzzzz  = 1;
-               z       = 2;
-               zzz     = 3;
+               zzzzzz  = 1
+               z       = 2
+               zzz     = 3
        )
        // no entry has a value
        var (
-               _       int;
-               _       float;
-               _       string;
+               _       int
+               _       float
+               _       string
 
-               _       int;    // comment
-               _       float;  // comment
-               _       string; // comment
+               _       int     // comment
+               _       float   // comment
+               _       string  // comment
        )
        // some entries have a type
        var (
-               xxxxxx          int;
-               x               float;
-               xxx             string;
-               yyyyyyyy        int     = 1234;
-               y               float   = 3.14;
-               yyyy                    = "bar";
-               yyy             string  = "foo";
+               xxxxxx          int
+               x               float
+               xxx             string
+               yyyyyyyy        int     = 1234
+               y               float   = 3.14
+               yyyy                    = "bar"
+               yyy             string  = "foo"
        )
        // mixed entries - all comments should be aligned
        var (
-               a, b, c                 int;
-               x                               = 10;
-               d                       int;    // comment
-               y                               = 20;           // comment
-               f, ff, fff, ffff        int     = 0, 1, 2, 3;   // comment
+               a, b, c                 int
+               x                               = 10
+               d                       int     // comment
+               y                               = 20            // comment
+               f, ff, fff, ffff        int     = 0, 1, 2, 3    // comment
        )
        // respect original line breaks
        var _ = []T{
                T{0x20, "Telugu"},
-       };
+       }
        var _ = []T{
                // respect original line breaks
                T{0x20, "Telugu"},
-       };
+       }
 }
 
 func _() {
        type (
-               xxxxxx  int;
-               x       float;
-               xxx     string;
-               xxxxx   []x;
-               xx      struct{};
+               xxxxxx  int
+               x       float
+               xxx     string
+               xxxxx   []x
+               xx      struct{}
                xxxxxxx struct {
-                       _, _    int;
-                       _       float;
-               };
-               xxxx    chan<- string;
+                       _, _    int
+                       _       float
+               }
+               xxxx    chan<- string
        )
 }
 
@@ -325,59 +325,59 @@ type _ struct {
 }
 
 type _ struct {        // this comment must not change indentation
-       f                       int;
-       f, ff, fff, ffff        int;
+       f                       int
+       f, ff, fff, ffff        int
 }
 
 type _ struct {
-       string;
+       string
 }
 
 type _ struct {
-       string; // comment
+       string  // comment
 }
 
 type _ struct {
-       string "tag";
+       string "tag"
 }
 
 type _ struct {
-       string "tag";   // comment
+       string "tag"    // comment
 }
 
 type _ struct {
-       f int;
+       f int
 }
 
 type _ struct {
-       f int;  // comment
+       f int   // comment
 }
 
 type _ struct {
-       f int "tag";
+       f int "tag"
 }
 
 type _ struct {
-       f int "tag";    // comment
+       f int "tag"     // comment
 }
 
 type _ struct {
-       bool;
-       a, b, c                 int;
-       int                     "tag";
-       ES;                             // comment
-       float                   "tag";  // comment
-       f                       int;    // comment
-       f, ff, fff, ffff        int;    // comment
-       g                       float   "tag";
-       h                       float   "tag";  // comment
+       bool
+       a, b, c                 int
+       int                     "tag"
+       ES                              // comment
+       float                   "tag"   // comment
+       f                       int     // comment
+       f, ff, fff, ffff        int     // comment
+       g                       float   "tag"
+       h                       float   "tag"   // comment
 }
 
 
 // difficult cases
 type _ struct {
-       bool;           // comment
-       text    []byte; // comment
+       bool            // comment
+       text    []byte  // comment
 }
 
 
@@ -385,41 +385,41 @@ type _ struct {
 type EI interface{}
 
 type _ interface {
-       EI;
+       EI
 }
 
 type _ interface {
-       f();
-       fffff();
+       f()
+       fffff()
 }
 
 type _ interface {
-       EI;
-       f();
-       fffffg();
+       EI
+       f()
+       fffffg()
 }
 
 type _ interface {     // this comment must not change indentation
-       EI;                             // here's a comment
-       f();                            // no blank between identifier and ()
-       fffff();                        // no blank between identifier and ()
-       gggggggggggg(x, y, z int);      // hurray
+       EI                              // here's a comment
+       f()                             // no blank between identifier and ()
+       fffff()                         // no blank between identifier and ()
+       gggggggggggg(x, y, z int)       // hurray
 }
 
 // formatting of variable declarations
 func _() {
        type day struct {
-               n               int;
-               short, long     string;
+               n               int
+               short, long     string
        }
        var (
-               Sunday          = day{0, "SUN", "Sunday"};
-               Monday          = day{1, "MON", "Monday"};
-               Tuesday         = day{2, "TUE", "Tuesday"};
-               Wednesday       = day{3, "WED", "Wednesday"};
-               Thursday        = day{4, "THU", "Thursday"};
-               Friday          = day{5, "FRI", "Friday"};
-               Saturday        = day{6, "SAT", "Saturday"};
+               Sunday          = day{0, "SUN", "Sunday"}
+               Monday          = day{1, "MON", "Monday"}
+               Tuesday         = day{2, "TUE", "Tuesday"}
+               Wednesday       = day{3, "WED", "Wednesday"}
+               Thursday        = day{4, "THU", "Thursday"}
+               Friday          = day{5, "FRI", "Friday"}
+               Saturday        = day{6, "SAT", "Saturday"}
        )
 }
 
@@ -464,14 +464,14 @@ func _() {
                        "print": nil,
                        "println": nil,
                },
-       };
+       }
 }
 
 
 func _() {
        var _ = T{
                a,      // must introduce trailing comma
-       };
+       }
 }
 
 
@@ -501,13 +501,10 @@ func _() {        // opening "{" must move up
        // in the following declarations, a comment must not
        // introduce a newline and thus cause a semicolon to
        // be inserted
-       const _ T = x // comment
-       ;
-       const _ = x // comment
-       ;
+       const _ T = x   // comment
+       const _ = x     // comment
 
-       type _ T // comment
-       ;
+       type _ T        // comment
        type _ struct // comment
        {
 
@@ -517,20 +514,18 @@ func _() {        // opening "{" must move up
 
        }
        type _ * // comment
-       T;
+       T
        type _ [ // comment
-       ]T;
+       ]T
        type _ [ // comment
-       10]T;
+       10]T
        type _ chan // comment
-       T;
+       T
        type _ map // comment
-       [T]T;
+       [T]T
 
-       var _ T // comment
-       ;
-       var _ T = x // comment
-       ;
+       var _ T         // comment
+       var _ T = x     // comment
        var _ struct // comment
        {
 
@@ -540,16 +535,15 @@ func _() {        // opening "{" must move up
 
        }
        var _ * // comment
-       T;
+       T
        var _ [ // comment
-       ]T;
+       ]T
        var _ [ // comment
-       10]T;
+       10]T
        var _ chan // comment
-       T;
+       T
        var _ map // comment
-       [T]T;
+       [T]T
 
-       var _ = x // comment
-       ;
+       var _ = x       // comment
 }
index 5701c6df094a024151c797cd6c932bc95192c6b7..deff4243ea2a7bad7634e7189ce7757772a26607 100644 (file)
 package expressions
 
 type T struct {
-       x, y, z int;
+       x, y, z int
 }
 
 var (
-       a, b, c, d, e                                           int;
-       under_bar                                               int;
-       longIdentifier1, longIdentifier2, longIdentifier3       int;
-       t0, t1, t2                                              T;
-       s                                                       string;
-       p                                                       *int;
+       a, b, c, d, e                                           int
+       under_bar                                               int
+       longIdentifier1, longIdentifier2, longIdentifier3       int
+       t0, t1, t2                                              T
+       s                                                       string
+       p                                                       *int
 )
 
 
 func _() {
        // no spaces around simple or parenthesized expressions
-       _ = a + b;
-       _ = a + b + c;
-       _ = a + b - c;
-       _ = a - b - c;
-       _ = a + (b * c);
-       _ = a + (b / c);
-       _ = a - (b % c);
-       _ = 1 + a;
-       _ = a + 1;
-       _ = a + b + 1;
-       _ = s[1:2];
-       _ = s[a:b];
-       _ = s[0:len(s)];
-       _ = s[0] << 1;
-       _ = (s[0] << 1) & 0xf;
-       _ = s[0]<<2 | s[1]>>4;
-       _ = "foo" + s;
-       _ = s + "foo";
-       _ = 'a' + 'b';
-       _ = len(s) / 2;
-       _ = len(t0.x) / a;
+       _ = a + b
+       _ = a + b + c
+       _ = a + b - c
+       _ = a - b - c
+       _ = a + (b * c)
+       _ = a + (b / c)
+       _ = a - (b % c)
+       _ = 1 + a
+       _ = a + 1
+       _ = a + b + 1
+       _ = s[1:2]
+       _ = s[a:b]
+       _ = s[0:len(s)]
+       _ = s[0] << 1
+       _ = (s[0] << 1) & 0xf
+       _ = s[0]<<2 | s[1]>>4
+       _ = "foo" + s
+       _ = s + "foo"
+       _ = 'a' + 'b'
+       _ = len(s) / 2
+       _ = len(t0.x) / a
 
        // spaces around expressions of different precedence or expressions containing spaces
-       _ = a + -b;
-       _ = a - ^b;
-       _ = a / *p;
-       _ = a + b*c;
-       _ = 1 + b*c;
-       _ = a + 2*c;
-       _ = a + c*2;
-       _ = 1 + 2*3;
-       _ = s[1 : 2*3];
-       _ = s[a : b-c];
-       _ = s[0:];
-       _ = s[a+b];
-       _ = s[a+b:];
-       _ = a[a<<b+1];
-       _ = a[a<<b+1:];
-       _ = s[a+b : len(s)];
-       _ = s[len(s):-a];
-       _ = s[a : len(s)+1];
-       _ = s[a:len(s)+1] + s;
+       _ = a + -b
+       _ = a - ^b
+       _ = a / *p
+       _ = a + b*c
+       _ = 1 + b*c
+       _ = a + 2*c
+       _ = a + c*2
+       _ = 1 + 2*3
+       _ = s[1 : 2*3]
+       _ = s[a : b-c]
+       _ = s[0:]
+       _ = s[a+b]
+       _ = s[a+b:]
+       _ = a[a<<b+1]
+       _ = a[a<<b+1:]
+       _ = s[a+b : len(s)]
+       _ = s[len(s):-a]
+       _ = s[a : len(s)+1]
+       _ = s[a:len(s)+1] + s
 
        // spaces around operators with equal or lower precedence than comparisons
-       _ = a == b;
-       _ = a != b;
-       _ = a > b;
-       _ = a >= b;
-       _ = a < b;
-       _ = a <= b;
-       _ = a < b && c > d;
-       _ = a < b || c > d;
+       _ = a == b
+       _ = a != b
+       _ = a > b
+       _ = a >= b
+       _ = a < b
+       _ = a <= b
+       _ = a < b && c > d
+       _ = a < b || c > d
 
        // spaces around "long" operands
-       _ = a + longIdentifier1;
-       _ = longIdentifier1 + a;
-       _ = longIdentifier1 + longIdentifier2*longIdentifier3;
-       _ = s + "a longer string";
+       _ = a + longIdentifier1
+       _ = longIdentifier1 + a
+       _ = longIdentifier1 + longIdentifier2*longIdentifier3
+       _ = s + "a longer string"
 
        // some selected cases
-       _ = a + t0.x;
-       _ = a + t0.x + t1.x*t2.x;
-       _ = a + b + c + d + e + 2*3;
-       _ = a + b + c + 2*3 + d + e;
-       _ = (a + b + c) * 2;
-       _ = a - b + c - d + (a + b + c) + d&e;
-       _ = under_bar - 1;
-       _ = Open(dpath+"/file", O_WRONLY|O_CREAT, 0666);
-       _ = int(c0&_Mask4)<<18 | int(c1&_Maskx)<<12 | int(c2&_Maskx)<<6 | int(c3&_Maskx);
+       _ = a + t0.x
+       _ = a + t0.x + t1.x*t2.x
+       _ = a + b + c + d + e + 2*3
+       _ = a + b + c + 2*3 + d + e
+       _ = (a + b + c) * 2
+       _ = a - b + c - d + (a + b + c) + d&e
+       _ = under_bar - 1
+       _ = Open(dpath+"/file", O_WRONLY|O_CREAT, 0666)
+       _ = int(c0&_Mask4)<<18 | int(c1&_Maskx)<<12 | int(c2&_Maskx)<<6 | int(c3&_Maskx)
 }
 
 
 func _() {
-       a + b;
-       a + b + c;
-       a + b*c;
-       a + (b * c);
-       (a + b) * c;
-       a + (b * c * d);
-       a + (b*c + d);
-
-       1 << x;
-       -1 << x;
-       1<<x - 1;
-       -1<<x - 1;
-
-       f(a + b);
-       f(a + b + c);
-       f(a + b*c);
-       f(a + (b * c));
-       f(1<<x-1, 1<<x-2);
-
-       1<<d.logWindowSize - 1;
-
-       buf = make(x, 2*cap(b.buf)+n);
-
-       dst[i*3+2] = dbuf[0] << 2;
-       dst[i*3+2] = dbuf[0]<<2 | dbuf[1]>>4;
-
-       b.buf = b.buf[0 : b.off+m+n];
-       b.buf = b.buf[0 : b.off+m*n];
-       f(b.buf[0 : b.off+m+n]);
-
-       signed += ' ' * 8;
-       tw.octal(header[148:155], chksum);
-
-       x > 0 && i >= 0;
-
-       x1, x0 := x>>w2, x&m2;
-       z0 = t1<<w2 + t0;
-       z1 = (t1 + t0>>w2) >> w2;
-       q1, r1 := x1/d1, x1%d1;
-       r1 = r1*b2 | x0>>w2;
-       x1 = (x1 << z) | (x0 >> (uint(w) - z));
-       x1 = x1<<z | x0>>(uint(w)-z);
-
-       buf[0 : len(buf)+1];
-       buf[0 : n+1];
-
-       a, b = b, a;
-       a = b + c;
-       a = b*c + d;
-       a*b + c;
-       a - b - c;
-       a - (b - c);
-       a - b*c;
-       a - (b * c);
-       a * b / c;
-       a / *b;
-       x[a|^b];
-       x[a / *b];
-       a & ^b;
-       a + +b;
-       a - -b;
-       x[a*-b];
-       x[a + +b];
-       x ^ y ^ z;
-       b[a>>24] ^ b[(a>>16)&0xFF] ^ b[(a>>8)&0xFF] ^ b[a&0xFF];
-       len(longVariableName) * 2;
-
-       token(matchType + xlength<<lengthShift + xoffset);
+       a + b
+       a + b + c
+       a + b*c
+       a + (b * c)
+       (a + b) * c
+       a + (b * c * d)
+       a + (b*c + d)
+
+       1 << x
+       -1 << x
+       1<<x - 1
+       -1<<x - 1
+
+       f(a + b)
+       f(a + b + c)
+       f(a + b*c)
+       f(a + (b * c))
+       f(1<<x-1, 1<<x-2)
+
+       1<<d.logWindowSize - 1
+
+       buf = make(x, 2*cap(b.buf)+n)
+
+       dst[i*3+2] = dbuf[0] << 2
+       dst[i*3+2] = dbuf[0]<<2 | dbuf[1]>>4
+
+       b.buf = b.buf[0 : b.off+m+n]
+       b.buf = b.buf[0 : b.off+m*n]
+       f(b.buf[0 : b.off+m+n])
+
+       signed += ' ' * 8
+       tw.octal(header[148:155], chksum)
+
+       x > 0 && i >= 0
+
+       x1, x0 := x>>w2, x&m2
+       z0 = t1<<w2 + t0
+       z1 = (t1 + t0>>w2) >> w2
+       q1, r1 := x1/d1, x1%d1
+       r1 = r1*b2 | x0>>w2
+       x1 = (x1 << z) | (x0 >> (uint(w) - z))
+       x1 = x1<<z | x0>>(uint(w)-z)
+
+       buf[0 : len(buf)+1]
+       buf[0 : n+1]
+
+       a, b = b, a
+       a = b + c
+       a = b*c + d
+       a*b + c
+       a - b - c
+       a - (b - c)
+       a - b*c
+       a - (b * c)
+       a * b / c
+       a / *b
+       x[a|^b]
+       x[a / *b]
+       a & ^b
+       a + +b
+       a - -b
+       x[a*-b]
+       x[a + +b]
+       x ^ y ^ z
+       b[a>>24] ^ b[(a>>16)&0xFF] ^ b[(a>>8)&0xFF] ^ b[a&0xFF]
+       len(longVariableName) * 2
+
+       token(matchType + xlength<<lengthShift + xoffset)
 }
 
 
 func _() {
-       _ = T{};
-       _ = struct{}{};
-       _ = [10]T{};
-       _ = [...]T{};
-       _ = []T{};
-       _ = map[int]T{};
-
-       _ = (T){};
-       _ = (struct{}){};
-       _ = ([10]T){};
-       _ = ([...]T){};
-       _ = ([]T){};
-       _ = (map[int]T){};
+       _ = T{}
+       _ = struct{}{}
+       _ = [10]T{}
+       _ = [...]T{}
+       _ = []T{}
+       _ = map[int]T{}
+
+       _ = (T){}
+       _ = (struct{}){}
+       _ = ([10]T){}
+       _ = ([...]T){}
+       _ = ([]T){}
+       _ = (map[int]T){}
 }
 
 
 // one-line structs/interfaces in composite literals (up to a threshold)
 func _() {
-       _ = struct{}{};
-       _ = struct{ x int }{0};
-       _ = struct{ x, y, z int }{0, 1, 2};
-       _ = struct{ int }{0};
+       _ = struct{}{}
+       _ = struct{ x int }{0}
+       _ = struct{ x, y, z int }{0, 1, 2}
+       _ = struct{ int }{0}
        _ = struct {
                s struct {
-                       int;
-               };
-       }{struct{ int }{0}};    // compositeLit context not propagated => multiLine result
+                       int
+               }
+       }{struct{ int }{0}}     // compositeLit context not propagated => multiLine result
 }
 
 
 func _() {
        // do not modify literals
-       _ = "tab1       tab2    tab3    end";   // string contains 3 tabs
-       _ = "tab1 tab2 tab3 end";       // same string with 3 blanks - may be unaligned because editors see tabs in strings
-       _ = "";                         // this comment should be aligned with the one on the previous line
-       _ = ``;
+       _ = "tab1       tab2    tab3    end"    // string contains 3 tabs
+       _ = "tab1 tab2 tab3 end"        // same string with 3 blanks - may be unaligned because editors see tabs in strings
+       _ = ""                          // this comment should be aligned with the one on the previous line
+       _ = ``
        _ = `
-`;
+`
        _ = `foo
-               bar`;
+               bar`
 }
 
 
 func _() {
        // one-line function literals
-       _ = func() {};
-       _ = func() int { return 0 };
-       _ = func(x, y int) bool { return x < y };
+       _ = func() {}
+       _ = func() int { return 0 }
+       _ = func(x, y int) bool { return x < y }
 
-       f(func() {});
-       f(func() int { return 0 });
-       f(func(x, y int) bool { return x < y });
+       f(func() {})
+       f(func() int { return 0 })
+       f(func(x, y int) bool { return x < y })
 }
 
 
 func _() {
        // do not add extra indentation to multi-line string lists
-       _ = "foo" + "bar";
+       _ = "foo" + "bar"
        _ = "foo" +
                "bar" +
-               "bah";
+               "bah"
        _ = []string{
                "abc" +
                        "def",
                "foo" +
                        "bar",
-       };
+       }
 }
 
 
@@ -257,18 +257,18 @@ func _() {
        _ = F1 +
                `string = "%s";` +
                `ptr = *;` +
-               `datafmt.T2 = s ["-" p "-"];`;
+               `datafmt.T2 = s ["-" p "-"];`
 
        _ =
                `datafmt "datafmt";` +
                        `default = "%v";` +
                        `array = *;` +
-                       `datafmt.T3 = s  {" " a a / ","};`;
+                       `datafmt.T3 = s  {" " a a / ","};`
 
        _ = `datafmt "datafmt";` +
                `default = "%v";` +
                `array = *;` +
-               `datafmt.T3 = s  {" " a a / ","};`;
+               `datafmt.T3 = s  {" " a a / ","};`
 }
 
 
@@ -276,24 +276,24 @@ func _() {
        // respect source lines in multi-line expressions
        _ = a +
                b +
-               c;
+               c
        _ = a < b ||
-               b < a;
+               b < a
        _ = "933262154439441526816992388562667004907159682643816214685929" +
                "638952175999932299156089414639761565182862536979208272237582" +
-               "51185210916864000000000000000000000000";       // 100!
-       _ = "170141183460469231731687303715884105727";  // prime
+               "51185210916864000000000000000000000000"        // 100!
+       _ = "170141183460469231731687303715884105727"   // prime
 }
 
 
 // Alignment after overlong lines
 const (
-       _       = "991";
-       _       = "2432902008176640000";        // 20!
+       _       = "991"
+       _       = "2432902008176640000" // 20!
        _       = "933262154439441526816992388562667004907159682643816214685929" +
                "638952175999932299156089414639761565182862536979208272237582" +
-               "51185210916864000000000000000000000000";       // 100!
-       _       = "170141183460469231731687303715884105727";    // prime
+               "51185210916864000000000000000000000000"        // 100!
+       _       = "170141183460469231731687303715884105727"     // prime
 )
 
 
@@ -301,11 +301,11 @@ const (
 func _() {
        _ = a + // comment
                b +     // comment
-               c;
+               c
        _ = "a" +       // comment
                "b" +   // comment
-               "c";
-       _ = "ba0408" + "7265717569726564";      // field 71, encoding 2, string "required"
+               "c"
+       _ = "ba0408" + "7265717569726564"       // field 71, encoding 2, string "required"
 }
 
 
@@ -313,25 +313,27 @@ func _() {
 func _() {
        f(1,
                2,
-               3);
+               3)
        f(1,
                2,
-               3);
+               3,
+       )
        // TODO(gri) the cases below are not correct yet
        f(1,
                2,
-               3);     // comment
+               3)      // comment
        f(1,
                2,
-               3       // comment
-       );
+               3,      // comment
+       )
        f(1,
                2,
-               3);     // comment
+               3)      // comment
        f(1,
                2,
-               3       // comment
-       );
+               3 // comment
+               ,
+       )
 }
 
 
@@ -353,8 +355,8 @@ func (p *parser) charClass() {
        // respect source lines in multi-line expressions
        if cc.negate && len(cc.ranges) == 2 &&
                cc.ranges[0] == '\n' && cc.ranges[1] == '\n' {
-               nl := new(_NotNl);
-               p.re.add(nl);
+               nl := new(_NotNl)
+               p.re.add(nl)
        }
 }
 
index c273932bdd47c22f8e52f93a679978cc6d1f0b99..003e83aeeddc003f2d027589eebadfb4249f714e 100644 (file)
 package expressions
 
 type T struct {
-       x, y, z int;
+       x, y, z int
 }
 
 var (
-       a, b, c, d, e   int;
-       under_bar       int;
-       longIdentifier1, longIdentifier2, longIdentifier3       int;
-       t0, t1, t2      T;
-       s       string;
-       p       *int;
+       a, b, c, d, e   int
+       under_bar       int
+       longIdentifier1, longIdentifier2, longIdentifier3       int
+       t0, t1, t2      T
+       s       string
+       p       *int
 )
 
 
 func _() {
        // no spaces around simple or parenthesized expressions
-       _ = a + b;
-       _ = a + b + c;
-       _ = a + b - c;
-       _ = a - b - c;
-       _ = a + (b * c);
-       _ = a + (b / c);
-       _ = a - (b % c);
-       _ = 1 + a;
-       _ = a + 1;
-       _ = a + b + 1;
-       _ = s[1:2];
-       _ = s[a:b];
-       _ = s[0:len(s)];
-       _ = s[0] << 1;
-       _ = (s[0] << 1) & 0xf;
-       _ = s[0]<<2 | s[1]>>4;
-       _ = "foo" + s;
-       _ = s + "foo";
-       _ = 'a' + 'b';
-       _ = len(s) / 2;
-       _ = len(t0.x) / a;
+       _ = a + b
+       _ = a + b + c
+       _ = a + b - c
+       _ = a - b - c
+       _ = a + (b * c)
+       _ = a + (b / c)
+       _ = a - (b % c)
+       _ = 1 + a
+       _ = a + 1
+       _ = a + b + 1
+       _ = s[1:2]
+       _ = s[a:b]
+       _ = s[0:len(s)]
+       _ = s[0] << 1
+       _ = (s[0] << 1) & 0xf
+       _ = s[0]<<2 | s[1]>>4
+       _ = "foo" + s
+       _ = s + "foo"
+       _ = 'a' + 'b'
+       _ = len(s) / 2
+       _ = len(t0.x) / a
 
        // spaces around expressions of different precedence or expressions containing spaces
-       _ = a + -b;
-       _ = a - ^b;
-       _ = a / *p;
-       _ = a + b*c;
-       _ = 1 + b*c;
-       _ = a + 2*c;
-       _ = a + c*2;
-       _ = 1 + 2*3;
-       _ = s[1 : 2*3];
-       _ = s[a : b-c];
-       _ = s[0:];
-       _ = s[a+b];
-       _ = s[a+b:];
-       _ = a[a<<b+1];
-       _ = a[a<<b+1:];
-       _ = s[a+b : len(s)];
-       _ = s[len(s):-a];
-       _ = s[a : len(s)+1];
-       _ = s[a:len(s)+1] + s;
+       _ = a + -b
+       _ = a - ^b
+       _ = a / *p
+       _ = a + b*c
+       _ = 1 + b*c
+       _ = a + 2*c
+       _ = a + c*2
+       _ = 1 + 2*3
+       _ = s[1 : 2*3]
+       _ = s[a : b-c]
+       _ = s[0:]
+       _ = s[a+b]
+       _ = s[a+b:]
+       _ = a[a<<b+1]
+       _ = a[a<<b+1:]
+       _ = s[a+b : len(s)]
+       _ = s[len(s):-a]
+       _ = s[a : len(s)+1]
+       _ = s[a:len(s)+1] + s
 
        // spaces around operators with equal or lower precedence than comparisons
-       _ = a == b;
-       _ = a != b;
-       _ = a > b;
-       _ = a >= b;
-       _ = a < b;
-       _ = a <= b;
-       _ = a < b && c > d;
-       _ = a < b || c > d;
+       _ = a == b
+       _ = a != b
+       _ = a > b
+       _ = a >= b
+       _ = a < b
+       _ = a <= b
+       _ = a < b && c > d
+       _ = a < b || c > d
 
        // spaces around "long" operands
-       _ = a + longIdentifier1;
-       _ = longIdentifier1 + a;
-       _ = longIdentifier1 + longIdentifier2*longIdentifier3;
-       _ = s + "a longer string";
+       _ = a + longIdentifier1
+       _ = longIdentifier1 + a
+       _ = longIdentifier1 + longIdentifier2*longIdentifier3
+       _ = s + "a longer string"
 
        // some selected cases
-       _ = a + t0.x;
-       _ = a + t0.x + t1.x*t2.x;
-       _ = a + b + c + d + e + 2*3;
-       _ = a + b + c + 2*3 + d + e;
-       _ = (a + b + c) * 2;
-       _ = a - b + c - d + (a + b + c) + d&e;
-       _ = under_bar - 1;
-       _ = Open(dpath+"/file", O_WRONLY|O_CREAT, 0666);
-       _ = int(c0&_Mask4)<<18 | int(c1&_Maskx)<<12 | int(c2&_Maskx)<<6 | int(c3&_Maskx);
+       _ = a + t0.x
+       _ = a + t0.x + t1.x*t2.x
+       _ = a + b + c + d + e + 2*3
+       _ = a + b + c + 2*3 + d + e
+       _ = (a + b + c) * 2
+       _ = a - b + c - d + (a + b + c) + d&e
+       _ = under_bar - 1
+       _ = Open(dpath+"/file", O_WRONLY|O_CREAT, 0666)
+       _ = int(c0&_Mask4)<<18 | int(c1&_Maskx)<<12 | int(c2&_Maskx)<<6 | int(c3&_Maskx)
 }
 
 
 func _() {
-       a + b;
-       a + b + c;
-       a + b*c;
-       a + (b * c);
-       (a + b) * c;
-       a + (b * c * d);
-       a + (b*c + d);
-
-       1 << x;
-       -1 << x;
-       1<<x - 1;
-       -1<<x - 1;
-
-       f(a + b);
-       f(a + b + c);
-       f(a + b*c);
-       f(a + (b * c));
-       f(1<<x-1, 1<<x-2);
-
-       1<<d.logWindowSize - 1;
-
-       buf = make(x, 2*cap(b.buf)+n);
-
-       dst[i*3+2] = dbuf[0] << 2;
-       dst[i*3+2] = dbuf[0]<<2 | dbuf[1]>>4;
-
-       b.buf = b.buf[0 : b.off+m+n];
-       b.buf = b.buf[0 : b.off+m*n];
-       f(b.buf[0 : b.off+m+n]);
-
-       signed += ' ' * 8;
-       tw.octal(header[148:155], chksum);
-
-       x > 0 && i >= 0;
-
-       x1, x0 := x>>w2, x&m2;
-       z0 = t1<<w2 + t0;
-       z1 = (t1 + t0>>w2) >> w2;
-       q1, r1 := x1/d1, x1%d1;
-       r1 = r1*b2 | x0>>w2;
-       x1 = (x1 << z) | (x0 >> (uint(w) - z));
-       x1 = x1<<z | x0>>(uint(w)-z);
-
-       buf[0 : len(buf)+1];
-       buf[0 : n+1];
-
-       a, b = b, a;
-       a = b + c;
-       a = b*c + d;
-       a*b + c;
-       a - b - c;
-       a - (b - c);
-       a - b*c;
-       a - (b * c);
-       a * b / c;
-       a / *b;
-       x[a|^b];
-       x[a / *b];
-       a & ^b;
-       a + +b;
-       a - -b;
-       x[a*-b];
-       x[a + +b];
-       x ^ y ^ z;
-       b[a>>24] ^ b[(a>>16)&0xFF] ^ b[(a>>8)&0xFF] ^ b[a&0xFF];
-       len(longVariableName) * 2;
-
-       token(matchType + xlength<<lengthShift + xoffset);
+       a + b
+       a + b + c
+       a + b*c
+       a + (b * c)
+       (a + b) * c
+       a + (b * c * d)
+       a + (b*c + d)
+
+       1 << x
+       -1 << x
+       1<<x - 1
+       -1<<x - 1
+
+       f(a + b)
+       f(a + b + c)
+       f(a + b*c)
+       f(a + (b * c))
+       f(1<<x-1, 1<<x-2)
+
+       1<<d.logWindowSize - 1
+
+       buf = make(x, 2*cap(b.buf)+n)
+
+       dst[i*3+2] = dbuf[0] << 2
+       dst[i*3+2] = dbuf[0]<<2 | dbuf[1]>>4
+
+       b.buf = b.buf[0 : b.off+m+n]
+       b.buf = b.buf[0 : b.off+m*n]
+       f(b.buf[0 : b.off+m+n])
+
+       signed += ' ' * 8
+       tw.octal(header[148:155], chksum)
+
+       x > 0 && i >= 0
+
+       x1, x0 := x>>w2, x&m2
+       z0 = t1<<w2 + t0
+       z1 = (t1 + t0>>w2) >> w2
+       q1, r1 := x1/d1, x1%d1
+       r1 = r1*b2 | x0>>w2
+       x1 = (x1 << z) | (x0 >> (uint(w) - z))
+       x1 = x1<<z | x0>>(uint(w)-z)
+
+       buf[0 : len(buf)+1]
+       buf[0 : n+1]
+
+       a, b = b, a
+       a = b + c
+       a = b*c + d
+       a*b + c
+       a - b - c
+       a - (b - c)
+       a - b*c
+       a - (b * c)
+       a * b / c
+       a / *b
+       x[a|^b]
+       x[a / *b]
+       a & ^b
+       a + +b
+       a - -b
+       x[a*-b]
+       x[a + +b]
+       x ^ y ^ z
+       b[a>>24] ^ b[(a>>16)&0xFF] ^ b[(a>>8)&0xFF] ^ b[a&0xFF]
+       len(longVariableName) * 2
+
+       token(matchType + xlength<<lengthShift + xoffset)
 }
 
 
 func _() {
-       _ = T{};
-       _ = struct{}{};
-       _ = [10]T{};
-       _ = [...]T{};
-       _ = []T{};
-       _ = map[int]T{};
-
-       _ = (T){};
-       _ = (struct{}){};
-       _ = ([10]T){};
-       _ = ([...]T){};
-       _ = ([]T){};
-       _ = (map[int]T){};
+       _ = T{}
+       _ = struct{}{}
+       _ = [10]T{}
+       _ = [...]T{}
+       _ = []T{}
+       _ = map[int]T{}
+
+       _ = (T){}
+       _ = (struct{}){}
+       _ = ([10]T){}
+       _ = ([...]T){}
+       _ = ([]T){}
+       _ = (map[int]T){}
 }
 
 
 // one-line structs/interfaces in composite literals (up to a threshold)
 func _() {
-       _ = struct{}{};
-       _ = struct{ x int }{0};
-       _ = struct{ x, y, z int }{0, 1, 2};
-       _ = struct{ int }{0};
+       _ = struct{}{}
+       _ = struct{ x int }{0}
+       _ = struct{ x, y, z int }{0, 1, 2}
+       _ = struct{ int }{0}
        _ = struct {
                s struct {
-                       int;
-               };
-       }{struct{ int }{0}};    // compositeLit context not propagated => multiLine result
+                       int
+               }
+       }{struct{ int }{0}}     // compositeLit context not propagated => multiLine result
 }
 
 
 func _() {
        // do not modify literals
-       _ = "tab1       tab2    tab3    end";   // string contains 3 tabs
-       _ = "tab1 tab2 tab3 end";       // same string with 3 blanks - may be unaligned because editors see tabs in strings
-       _ = ""; // this comment should be aligned with the one on the previous line
-       _ = ``;
+       _ = "tab1       tab2    tab3    end"    // string contains 3 tabs
+       _ = "tab1 tab2 tab3 end"        // same string with 3 blanks - may be unaligned because editors see tabs in strings
+       _ = ""  // this comment should be aligned with the one on the previous line
+       _ = ``
        _ = `
-`;
+`
        _ = `foo
-               bar`;
+               bar`
 }
 
 
 func _() {
        // one-line function literals
-       _ = func() {};
-       _ = func() int { return 0 };
-       _ = func(x, y int) bool { return x < y };
+       _ = func() {}
+       _ = func() int { return 0 }
+       _ = func(x, y int) bool { return x < y }
 
-       f(func() {});
-       f(func() int { return 0 });
-       f(func(x, y int) bool { return x < y });
+       f(func() {})
+       f(func() int { return 0 })
+       f(func(x, y int) bool { return x < y })
 }
 
 
 func _() {
        // do not add extra indentation to multi-line string lists
-       _ = "foo" + "bar";
+       _ = "foo" + "bar"
        _ = "foo" +
                "bar" +
-               "bah";
+               "bah"
        _ = []string{
                "abc" +
                        "def",
                "foo" +
                        "bar",
-       };
+       }
 }
 
 
@@ -257,18 +257,18 @@ func _() {
        _ = F1 +
                `string = "%s";` +
                `ptr = *;` +
-               `datafmt.T2 = s ["-" p "-"];`;
+               `datafmt.T2 = s ["-" p "-"];`
 
        _ =
                `datafmt "datafmt";` +
                        `default = "%v";` +
                        `array = *;` +
-                       `datafmt.T3 = s  {" " a a / ","};`;
+                       `datafmt.T3 = s  {" " a a / ","};`
 
        _ = `datafmt "datafmt";` +
                `default = "%v";` +
                `array = *;` +
-               `datafmt.T3 = s  {" " a a / ","};`;
+               `datafmt.T3 = s  {" " a a / ","};`
 }
 
 
@@ -276,24 +276,24 @@ func _() {
        // respect source lines in multi-line expressions
        _ = a +
                b +
-               c;
+               c
        _ = a < b ||
-               b < a;
+               b < a
        _ = "933262154439441526816992388562667004907159682643816214685929" +
                "638952175999932299156089414639761565182862536979208272237582" +
-               "51185210916864000000000000000000000000";       // 100!
-       _ = "170141183460469231731687303715884105727";  // prime
+               "51185210916864000000000000000000000000"        // 100!
+       _ = "170141183460469231731687303715884105727"   // prime
 }
 
 
 // Alignment after overlong lines
 const (
-       _               = "991";
-       _               = "2432902008176640000";        // 20!
+       _               = "991"
+       _               = "2432902008176640000" // 20!
        _               = "933262154439441526816992388562667004907159682643816214685929" +
                "638952175999932299156089414639761565182862536979208272237582" +
-               "51185210916864000000000000000000000000";       // 100!
-       _               = "170141183460469231731687303715884105727";    // prime
+               "51185210916864000000000000000000000000"        // 100!
+       _               = "170141183460469231731687303715884105727"     // prime
 )
 
 
@@ -301,11 +301,11 @@ const (
 func _() {
        _ = a + // comment
                b +     // comment
-               c;
+               c
        _ = "a" +       // comment
                "b" +   // comment
-               "c";
-       _ = "ba0408" + "7265717569726564";      // field 71, encoding 2, string "required"
+               "c"
+       _ = "ba0408" + "7265717569726564"       // field 71, encoding 2, string "required"
 }
 
 
@@ -313,25 +313,27 @@ func _() {
 func _() {
        f(1,
                2,
-               3);
+               3)
        f(1,
                2,
-               3);
+               3,
+       )
        // TODO(gri) the cases below are not correct yet
        f(1,
                2,
-               3);     // comment
+               3)      // comment
        f(1,
                2,
-               3       // comment
-       );
+               3,      // comment
+       )
        f(1,
                2,
-               3);     // comment
+               3)      // comment
        f(1,
                2,
-               3       // comment
-       );
+               3 // comment
+               ,
+       )
 }
 
 
@@ -353,8 +355,8 @@ func (p *parser) charClass() {
        // respect source lines in multi-line expressions
        if cc.negate && len(cc.ranges) == 2 &&
                cc.ranges[0] == '\n' && cc.ranges[1] == '\n' {
-               nl := new(_NotNl);
-               p.re.add(nl);
+               nl := new(_NotNl)
+               p.re.add(nl)
        }
 }
 
index a4602c90ce2f6bc5080819a093d45a853e605ea0..01c673f7704fe1194fdd3791a17c7f8a8a0e4a12 100644 (file)
@@ -5,23 +5,23 @@
 package linebreaks
 
 import (
-       "bytes";
-       "fmt";
-       "io";
-       "os";
-       "reflect";
-       "strings";
-       "testing";
+       "bytes"
+       "fmt"
+       "io"
+       "os"
+       "reflect"
+       "strings"
+       "testing"
 )
 
 type writerTestEntry struct {
-       header          *Header;
-       contents        string;
+       header          *Header
+       contents        string
 }
 
 type writerTest struct {
-       file    string; // filename of expected output
-       entries []*writerTestEntry;
+       file    string  // filename of expected output
+       entries []*writerTestEntry
 }
 
 var writerTests = []*writerTest{
@@ -83,8 +83,8 @@ var writerTests = []*writerTest{
 }
 
 type untarTest struct {
-       file    string;
-       headers []*Header;
+       file    string
+       headers []*Header
 }
 
 var untarTests = []*untarTest{
@@ -186,36 +186,36 @@ func usage() {
        fmt.Fprintf(os.Stderr,
                // TODO(gri): the 2nd string of this string list should not be indented
                "usage: godoc package [name ...]\n"+
-                       "       godoc -http=:6060\n");
-       flag.PrintDefaults();
-       os.Exit(2);
+                       "       godoc -http=:6060\n")
+       flag.PrintDefaults()
+       os.Exit(2)
 }
 
 func TestReader(t *testing.T) {
 testLoop:
        for i, test := range untarTests {
-               f, err := os.Open(test.file, os.O_RDONLY, 0444);
+               f, err := os.Open(test.file, os.O_RDONLY, 0444)
                if err != nil {
-                       t.Errorf("test %d: Unexpected error: %v", i, err);
-                       continue;
+                       t.Errorf("test %d: Unexpected error: %v", i, err)
+                       continue
                }
-               tr := NewReader(f);
+               tr := NewReader(f)
                for j, header := range test.headers {
-                       hdr, err := tr.Next();
+                       hdr, err := tr.Next()
                        if err != nil || hdr == nil {
-                               t.Errorf("test %d, entry %d: Didn't get entry: %v", i, j, err);
-                               f.Close();
-                               continue testLoop;
+                               t.Errorf("test %d, entry %d: Didn't get entry: %v", i, j, err)
+                               f.Close()
+                               continue testLoop
                        }
                        if !reflect.DeepEqual(hdr, header) {
                                t.Errorf("test %d, entry %d: Incorrect header:\nhave %+v\nwant %+v",
                                        i, j, *hdr, *header)
                        }
                }
-               hdr, err := tr.Next();
+               hdr, err := tr.Next()
                if hdr != nil || err != nil {
                        t.Errorf("test %d: Unexpected entry or error: hdr=%v err=%v", i, err)
                }
-               f.Close();
+               f.Close()
        }
 }
index b09352c4c195b199134ee40475fcb15bc5ca6758..b7d8ad2ea186c61ef4ff8212388659564d64365d 100644 (file)
@@ -64,16 +64,16 @@ func _() {
 
        switch x := 0; x {
        case 1:
-               use(x);
-               use(x); // followed by an empty line
+               use(x)
+               use(x)  // followed by an empty line
 
        case 2: // followed by an empty line
 
                use(x)  // followed by an empty line
 
        case 3: // no empty lines
-               use(x);
-               use(x);
+               use(x)
+               use(x)
        }
 
        switch x {
@@ -152,20 +152,20 @@ func _() {
 // line at a time.
 func _() {
 
-       const _ = 0;
+       const _ = 0
 
-       const _ = 1;
-       type _ int;
-       type _ float;
+       const _ = 1
+       type _ int
+       type _ float
 
-       var _ = 0;
-       var x = 1;
+       var _ = 0
+       var x = 1
 
        // Each use(x) call below should have at most one empty line before and after.
 
 
 
-       use(x);
+       use(x)
 
        if x < x {
 
@@ -206,9 +206,9 @@ L:  _ = 0
 
 func _() {
        for {
-       L1:     _ = 0;
+       L1:     _ = 0
        L2:
-               _ = 0;
+               _ = 0
        }
 }
 
@@ -216,9 +216,9 @@ func _() {
 func _() {
        // this comment should be indented
        for {
-       L1:     _ = 0;
+       L1:     _ = 0
        L2:
-               _ = 0;
+               _ = 0
        }
 }
 
@@ -227,14 +227,14 @@ func _() {
        if {
                _ = 0
        }
-       _ = 0;  // the indentation here should not be affected by the long label name
+       _ = 0   // the indentation here should not be affected by the long label name
 AnOverlongLabel:
-       _ = 0;
+       _ = 0
 
        if {
                _ = 0
        }
-       _ = 0;
+       _ = 0
 
-L:     _ = 0;
+L:     _ = 0
 }