]> Cypherpunks repositories - gostls13.git/commitdiff
Don't print ()'s around a range clause's expression.
authorRobert Griesemer <gri@golang.org>
Tue, 16 Feb 2010 18:19:51 +0000 (10:19 -0800)
committerRobert Griesemer <gri@golang.org>
Tue, 16 Feb 2010 18:19:51 +0000 (10:19 -0800)
Fixes #605.

R=rsc
CC=golang-dev
https://golang.org/cl/207108

src/pkg/go/printer/nodes.go
src/pkg/go/printer/testdata/statements.golden
src/pkg/go/printer/testdata/statements.input

index 65b19e9f5d4c8ecfb31fdee68953e33948e2bebb..218ad765d8d03d21da5394cee6e04d921e4c9790 100644 (file)
@@ -671,6 +671,7 @@ func (p *printer) expr1(expr ast.Expr, prec1, depth int, ctxt exprContext, multi
                        // no parenthesis needed
                        p.print(x.Op)
                        if x.Op == token.RANGE {
+                               // TODO(gri) Remove this code if it cannot be reached.
                                p.print(blank)
                        }
                        p.expr1(x.X, prec, depth, 0, multiLine)
@@ -1075,7 +1076,7 @@ func (p *printer) stmt(stmt ast.Stmt, multiLine *bool) {
                        p.expr(s.Value, multiLine)
                }
                p.print(blank, s.TokPos, s.Tok, blank, token.RANGE, blank)
-               p.expr(s.X, multiLine)
+               p.expr(stripParens(s.X), multiLine)
                p.print(blank)
                p.block(s.Body, 1, true)
                *multiLine = true
index b7d8ad2ea186c61ef4ff8212388659564d64365d..86d8282cd7f321d0d8b9aec8b38a120602ff37aa 100644 (file)
@@ -144,6 +144,9 @@ func _() {
        for x := range []int{} {
                use(x)
        }
+       for x := range []int{} {
+               use(x)
+       }       // no parens printed
 }
 
 
index a6efba7c6494e79ff5911376843406c0fa2a0b0f..061f7f320506d63562ac8b522063d295ef8d42e1 100644 (file)
@@ -107,6 +107,7 @@ func _() {
        }
        for x := expr;expr;expr = false { use(x) }
        for x := range []int{} { use(x) }
+       for x := range (([]int{})) { use(x) }  // no parens printed
 }