summaryrefslogtreecommitdiff
path: root/src/pkg/go
diff options
context:
space:
mode:
authorRobert Griesemer <gri@golang.org>2010-03-30 16:49:51 -0700
committerRobert Griesemer <gri@golang.org>2010-03-30 16:49:51 -0700
commitac49e203c149966366f91eeff76c10a483e7176a (patch)
tree2f5c47ea1a64a55626919316ea18d878f5662e1a /src/pkg/go
parent5aaf7119fc2ef4728973cad70dc4a74cf804ae51 (diff)
downloadgolang-ac49e203c149966366f91eeff76c10a483e7176a.tar.gz
go/printer: follow-up on CL 802043
- more test cases - comment fixes - minor unrelated changes as part of investigation of issue 702 R=rsc CC=golang-dev http://codereview.appspot.com/860041
Diffstat (limited to 'src/pkg/go')
-rw-r--r--src/pkg/go/printer/nodes.go12
-rw-r--r--src/pkg/go/printer/printer.go10
-rw-r--r--src/pkg/go/printer/testdata/expressions.golden21
-rw-r--r--src/pkg/go/printer/testdata/expressions.input46
-rw-r--r--src/pkg/go/printer/testdata/expressions.raw21
5 files changed, 87 insertions, 23 deletions
diff --git a/src/pkg/go/printer/nodes.go b/src/pkg/go/printer/nodes.go
index c13382bde..b020060d7 100644
--- a/src/pkg/go/printer/nodes.go
+++ b/src/pkg/go/printer/nodes.go
@@ -260,7 +260,7 @@ func (p *printer) exprList(prev token.Position, list []ast.Expr, depth int, mode
} else if mode&periodSep == 0 {
p.print(blank)
}
- // period-separadet list elements don't need a blank
+ // period-separated list elements don't need a blank
}
if isPair && size > 0 && len(list) > 1 {
@@ -676,8 +676,6 @@ func isBinary(expr ast.Expr) bool {
// type assertions, all of which may be found in selector chains, to make them
// parts of the chain.
func splitSelector(expr ast.Expr) (body, suffix ast.Expr) {
- // Rewrite call and index expressions to be a part of the selector chain so
- // that their multiline arguments get indented correctly.
switch x := expr.(type) {
case *ast.SelectorExpr:
body, suffix = x.X, x.Sel
@@ -714,7 +712,8 @@ func splitSelector(expr ast.Expr) (body, suffix ast.Expr) {
// Convert an expression into an expression list split at the periods of
// selector expressions.
-func selectorExprList(expr ast.Expr) (result []ast.Expr) {
+func selectorExprList(expr ast.Expr) []ast.Expr {
+ // split expression
var list vector.Vector
for expr != nil {
var suffix ast.Expr
@@ -722,13 +721,14 @@ func selectorExprList(expr ast.Expr) (result []ast.Expr) {
list.Push(suffix)
}
- result = make([]ast.Expr, len(list))
+ // convert expression list
+ result := make([]ast.Expr, len(list))
i := len(result)
for _, x := range list {
i--
result[i] = x.(ast.Expr)
}
- return
+ return result
}
diff --git a/src/pkg/go/printer/printer.go b/src/pkg/go/printer/printer.go
index 2316a459b..745ecd4cc 100644
--- a/src/pkg/go/printer/printer.go
+++ b/src/pkg/go/printer/printer.go
@@ -472,7 +472,7 @@ func stripCommonPrefix(lines [][]byte) {
for i, line := range lines[1 : len(lines)-1] {
switch {
case isBlank(line):
- lines[i+1] = nil
+ lines[1+i] = nil // range starts at line 1
case prefix == nil:
prefix = commonPrefix(line, line)
default:
@@ -521,7 +521,7 @@ func stripCommonPrefix(lines [][]byte) {
} else {
// comment text on the first line
suffix := make([]byte, len(first))
- n := 2
+ n := 2 // start after opening /*
for n < len(first) && first[n] <= ' ' {
suffix[n] = first[n]
n++
@@ -563,9 +563,9 @@ func stripCommonPrefix(lines [][]byte) {
}
// Remove the common prefix from all but the first and empty lines.
- for i, line := range lines {
- if i > 0 && len(line) != 0 {
- lines[i] = line[len(prefix):]
+ for i, line := range lines[1:] {
+ if len(line) != 0 {
+ lines[1+i] = line[len(prefix):] // range starts at line 1
}
}
}
diff --git a/src/pkg/go/printer/testdata/expressions.golden b/src/pkg/go/printer/testdata/expressions.golden
index e1b50b7f8..95e5502d3 100644
--- a/src/pkg/go/printer/testdata/expressions.golden
+++ b/src/pkg/go/printer/testdata/expressions.golden
@@ -473,4 +473,25 @@ func _() {
Method(1, 2,
3).
Thingy
+
+ _ = a.b.c
+ _ = a.
+ b.
+ c
+ _ = a.b().c
+ _ = a.
+ b().
+ c
+ _ = a.b[0].c
+ _ = a.
+ b[0].
+ c
+ _ = a.b[0:].c
+ _ = a.
+ b[0:].
+ c
+ _ = a.b.(T).c
+ _ = a.
+ b.(T).
+ c
}
diff --git a/src/pkg/go/printer/testdata/expressions.input b/src/pkg/go/printer/testdata/expressions.input
index 8974ca570..13891d971 100644
--- a/src/pkg/go/printer/testdata/expressions.input
+++ b/src/pkg/go/printer/testdata/expressions.input
@@ -423,19 +423,19 @@ func _() {
1).foo(2)
_ = Array[3 +
- 4]
+4]
_ = Method(1, 2,
3)
_ = new(T).
- foo().
- bar().(*Type)
+ foo().
+ bar() . (*Type)
_ = new(T).
- foo().
- bar().(*Type).
- baz()
+foo().
+bar().(*Type).
+baz()
_ = new(T).
foo().
@@ -443,7 +443,7 @@ func _() {
_ = new(T).
foo().
- bar()["idx"].
+ bar()["idx"] .
baz()
_ = new(T).
@@ -459,10 +459,32 @@ func _() {
Field.
Array[3+
4].
- Table["foo"].
- Blob.(*Type).
- Slices[1:4].
- Method(1, 2,
- 3).
+ Table ["foo"].
+ Blob. (*Type).
+ Slices[1:4].
+ Method(1, 2,
+ 3).
Thingy
+
+ _ = a.b.c
+ _ = a.
+ b.
+ c
+ _ = a.b().c
+ _ = a.
+ b().
+ c
+ _ = a.b[0].c
+ _ = a.
+ b[0].
+ c
+ _ = a.b[0:].c
+ _ = a.
+ b[0:].
+ c
+ _ = a.b.(T).c
+ _ = a.
+ b.
+ (T).
+ c
}
diff --git a/src/pkg/go/printer/testdata/expressions.raw b/src/pkg/go/printer/testdata/expressions.raw
index 8c0f2ba78..dccc8d122 100644
--- a/src/pkg/go/printer/testdata/expressions.raw
+++ b/src/pkg/go/printer/testdata/expressions.raw
@@ -473,4 +473,25 @@ func _() {
Method(1, 2,
3).
Thingy
+
+ _ = a.b.c
+ _ = a.
+ b.
+ c
+ _ = a.b().c
+ _ = a.
+ b().
+ c
+ _ = a.b[0].c
+ _ = a.
+ b[0].
+ c
+ _ = a.b[0:].c
+ _ = a.
+ b[0:].
+ c
+ _ = a.b.(T).c
+ _ = a.
+ b.(T).
+ c
}