print the value using (in effect) %v when Printf is given mismatched args for its format
Printf("%s", 2) gives %s(int=2)
R=rsc
DELTA=12 (10 added, 0 deleted, 2 changed)
OCL=34042
CL=34044
diff --git a/src/pkg/fmt/print.go b/src/pkg/fmt/print.go
index bb1030e..e5177ef 100644
--- a/src/pkg/fmt/print.go
+++ b/src/pkg/fmt/print.go
@@ -700,14 +700,20 @@
default:
badtype:
- s = "%" + string(c) + "(" + field.Type().String() + ")%";
+ s = "%" + string(c) + "(" + field.Type().String() + "=";
+ p.addstr(s);
+ p.printField(field);
+ s= ")%";
}
p.addstr(s);
}
if fieldnum < v.NumField() {
p.addstr("?(extra ");
for ; fieldnum < v.NumField(); fieldnum++ {
- p.addstr(getField(v, fieldnum).Type().String());
+ field := getField(v, fieldnum);
+ p.addstr(field.Type().String());
+ p.addstr("=");
+ p.printField(field);
if fieldnum + 1 < v.NumField() {
p.addstr(", ");
}