mirror of
https://github.com/golang/go
synced 2024-11-18 17:14:45 -07:00
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 https://golang.org/cl/860041
This commit is contained in:
parent
78547ca132
commit
f1c39c13a6
@ -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
|
||||
}
|
||||
|
||||
|
||||
|
@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
|
21
src/pkg/go/printer/testdata/expressions.golden
vendored
21
src/pkg/go/printer/testdata/expressions.golden
vendored
@ -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
|
||||
}
|
||||
|
46
src/pkg/go/printer/testdata/expressions.input
vendored
46
src/pkg/go/printer/testdata/expressions.input
vendored
@ -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
|
||||
}
|
||||
|
21
src/pkg/go/printer/testdata/expressions.raw
vendored
21
src/pkg/go/printer/testdata/expressions.raw
vendored
@ -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
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user