summaryrefslogtreecommitdiff
path: root/src/pkg
diff options
context:
space:
mode:
authorRobert Griesemer <gri@golang.org>2010-02-16 10:19:51 -0800
committerRobert Griesemer <gri@golang.org>2010-02-16 10:19:51 -0800
commit4d5e60f1878767d9f8df494365c034f901a694e3 (patch)
treefec96208b60a4c323f6b11ba55bba8ad4e4415dc /src/pkg
parente4c58d0c6be314f729ba3423df6721494f0a9eb6 (diff)
downloadgolang-4d5e60f1878767d9f8df494365c034f901a694e3.tar.gz
Don't print ()'s around a range clause's expression.
Fixes issue 605. R=rsc CC=golang-dev http://codereview.appspot.com/207108
Diffstat (limited to 'src/pkg')
-rw-r--r--src/pkg/go/printer/nodes.go3
-rw-r--r--src/pkg/go/printer/testdata/statements.golden3
-rw-r--r--src/pkg/go/printer/testdata/statements.input1
3 files changed, 6 insertions, 1 deletions
diff --git a/src/pkg/go/printer/nodes.go b/src/pkg/go/printer/nodes.go
index 65b19e9f5..218ad765d 100644
--- a/src/pkg/go/printer/nodes.go
+++ b/src/pkg/go/printer/nodes.go
@@ -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
diff --git a/src/pkg/go/printer/testdata/statements.golden b/src/pkg/go/printer/testdata/statements.golden
index b7d8ad2ea..86d8282cd 100644
--- a/src/pkg/go/printer/testdata/statements.golden
+++ b/src/pkg/go/printer/testdata/statements.golden
@@ -144,6 +144,9 @@ func _() {
for x := range []int{} {
use(x)
}
+ for x := range []int{} {
+ use(x)
+ } // no parens printed
}
diff --git a/src/pkg/go/printer/testdata/statements.input b/src/pkg/go/printer/testdata/statements.input
index a6efba7c6..061f7f320 100644
--- a/src/pkg/go/printer/testdata/statements.input
+++ b/src/pkg/go/printer/testdata/statements.input
@@ -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
}