summaryrefslogtreecommitdiff
path: root/src/pkg/fmt/format.go
diff options
context:
space:
mode:
authorRob Pike <r@golang.org>2010-06-28 14:11:38 -0700
committerRob Pike <r@golang.org>2010-06-28 14:11:38 -0700
commit2e258e4d7d5776741079b4b741b9e9dc9e476719 (patch)
tree9026bbfb284e5d6f12267e132e549e3e27e2cb56 /src/pkg/fmt/format.go
parent38ce83e85d620f191bd6f5f7de1fe0e22ed538cf (diff)
downloadgolang-2e258e4d7d5776741079b4b741b9e9dc9e476719.tar.gz
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 http://codereview.appspot.com/1729045
Diffstat (limited to 'src/pkg/fmt/format.go')
-rw-r--r--src/pkg/fmt/format.go25
1 files changed, 7 insertions, 18 deletions
diff --git a/src/pkg/fmt/format.go b/src/pkg/fmt/format.go
index 62fc9ff1c..3ec1cf139 100644
--- a/src/pkg/fmt/format.go
+++ b/src/pkg/fmt/format.go
@@ -43,14 +43,13 @@ type fmt struct {
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 @@ func (f *fmt) pad(b []byte) {
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 @@ func (f *fmt) padString(s string) {
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_fb32(v float32) { f.padString(strconv.Ftoa32(v, 'b', 0)) }
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 @@ func (f *fmt) fmt_c64(v complex64, verb int) {
case 'G':
f.fmt_G32(r)
}
- f.preserveFlags = false
if i != 0 {
break
}
@@ -373,7 +364,6 @@ func (f *fmt) fmt_c64(v complex64, verb int) {
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 @@ func (f *fmt) fmt_c128(v complex128, verb int) {
case 'G':
f.fmt_G64(r)
}
- f.preserveFlags = false
if i != 0 {
break
}