fmt.Printf: fix bug in handling of %#v.
nice side effect: slices now obey their format verb. example:
fmt.Printf("%q\n", []string{"a"})
R=rsc
CC=golang-dev
https://golang.org/cl/1729045
diff --git a/src/pkg/fmt/format.go b/src/pkg/fmt/format.go
index 62fc9ff..3ec1cf1 100644
--- a/src/pkg/fmt/format.go
+++ b/src/pkg/fmt/format.go
@@ -43,14 +43,13 @@
wid int
prec int
// flags
- widPresent bool
- precPresent bool
- minus bool
- plus bool
- sharp bool
- space bool
- zero bool
- preserveFlags bool // don't clear flags after this print; used to carry over in complex prints
+ widPresent bool
+ precPresent bool
+ minus bool
+ plus bool
+ sharp bool
+ space bool
+ zero bool
}
func (f *fmt) clearflags() {
@@ -120,9 +119,6 @@
if right > 0 {
f.writePadding(right, padding)
}
- if !f.preserveFlags {
- f.clearflags()
- }
}
// append s to buf, padded on left (w > 0) or right (w < 0 or f.minus).
@@ -140,9 +136,6 @@
if right > 0 {
f.writePadding(right, padding)
}
- if !f.preserveFlags {
- f.clearflags()
- }
}
func putint(buf []byte, base, val uint64, digits string) int {
@@ -345,7 +338,6 @@
func (f *fmt) fmt_c64(v complex64, verb int) {
f.buf.WriteByte('(')
r := real(v)
- f.preserveFlags = true
for i := 0; ; i++ {
switch verb {
case 'e':
@@ -359,7 +351,6 @@
case 'G':
f.fmt_G32(r)
}
- f.preserveFlags = false
if i != 0 {
break
}
@@ -373,7 +364,6 @@
func (f *fmt) fmt_c128(v complex128, verb int) {
f.buf.WriteByte('(')
r := real(v)
- f.preserveFlags = true
for i := 0; ; i++ {
switch verb {
case 'e':
@@ -387,7 +377,6 @@
case 'G':
f.fmt_G64(r)
}
- f.preserveFlags = false
if i != 0 {
break
}