@@ -164,6 +164,124 @@ var gosyntax = []test{
164164 },
165165}
166166
167+ var gosyntaxSkipZeroFields = []test {
168+ {nil , `nil` },
169+ {"" , `""` },
170+ {"a" , `"a"` },
171+ {1 , "int(1)" },
172+ {1.0 , "float64(1)" },
173+ {[]int (nil ), "[]int(nil)" },
174+ {[0 ]int {}, "[0]int{}" },
175+ {complex (1 , 0 ), "(1+0i)" },
176+ //{make(chan int), "(chan int)(0x1234)"},
177+ {unsafe .Pointer (uintptr (unsafe .Pointer (& long ))), fmt .Sprintf ("unsafe.Pointer(0x%02x)" , uintptr (unsafe .Pointer (& long )))},
178+ {func (int ) {}, "func(int) {...}" },
179+ {map [string ]string {"a" : "a" , "b" : "b" }, "map[string]string{\" a\" :\" a\" , \" b\" :\" b\" }" },
180+ {map [int ]int {1 : 1 }, "map[int]int{1:1}" },
181+ {int32 (1 ), "int32(1)" },
182+ {io .EOF , `&errors.errorString{s:"EOF"}` },
183+ {[]string {"a" }, `[]string{"a"}` },
184+ {
185+ []string {long },
186+ `[]string{"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"}` ,
187+ },
188+ {F (5 ), "pretty.F(5)" },
189+ {
190+ SA {& T {1 , 2 }, T {3 , 4 }},
191+ `pretty.SA{
192+ t: &pretty.T{x:1, y:2},
193+ v: pretty.T{x:3, y:4},
194+ }` ,
195+ },
196+ {
197+ map [int ][]byte {1 : {}},
198+ `map[int][]uint8{
199+ 1: {},
200+ }` ,
201+ },
202+ {
203+ map [int ]T {1 : {}},
204+ `map[int]pretty.T{
205+ 1: {},
206+ }` ,
207+ },
208+ {
209+ long ,
210+ `"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"` ,
211+ },
212+ {
213+ LongStructTypeName {
214+ longFieldName : LongStructTypeName {},
215+ otherLongFieldName : long ,
216+ },
217+ `pretty.LongStructTypeName{
218+ otherLongFieldName: "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789",
219+ }` ,
220+ },
221+ {
222+ LongStructTypeName {
223+ longFieldName : long ,
224+ otherLongFieldName : "" ,
225+ },
226+ `pretty.LongStructTypeName{
227+ longFieldName: "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789",
228+ }` ,
229+ },
230+ {
231+ LongStructTypeName {
232+ longFieldName : "" ,
233+ otherLongFieldName : "" ,
234+ },
235+ `pretty.LongStructTypeName{}` ,
236+ },
237+ {
238+ & LongStructTypeName {
239+ longFieldName : & LongStructTypeName {},
240+ otherLongFieldName : (* LongStructTypeName )(nil ),
241+ },
242+ `&pretty.LongStructTypeName{
243+ longFieldName: &pretty.LongStructTypeName{},
244+ }` ,
245+ },
246+ {
247+ []LongStructTypeName {
248+ {nil , nil },
249+ {3 , 3 },
250+ {long , nil },
251+ },
252+ `[]pretty.LongStructTypeName{
253+ {},
254+ {
255+ longFieldName: int(3),
256+ otherLongFieldName: int(3),
257+ },
258+ {
259+ longFieldName: "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789",
260+ },
261+ }` ,
262+ },
263+ {
264+ []interface {}{
265+ LongStructTypeName {nil , nil },
266+ []byte {1 , 2 , 3 },
267+ T {3 , 4 },
268+ T {0 , 4 },
269+ T {3 , 0 },
270+ LongStructTypeName {long , nil },
271+ },
272+ `[]interface {}{
273+ pretty.LongStructTypeName{},
274+ []uint8{0x1, 0x2, 0x3},
275+ pretty.T{x:3, y:4},
276+ pretty.T{y:4},
277+ pretty.T{x:3},
278+ pretty.LongStructTypeName{
279+ longFieldName: "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789",
280+ },
281+ }` ,
282+ },
283+ }
284+
167285func TestGoSyntax (t * testing.T ) {
168286 for _ , tt := range gosyntax {
169287 s := fmt .Sprintf ("%# v" , Formatter (tt .v ))
@@ -176,6 +294,18 @@ func TestGoSyntax(t *testing.T) {
176294 }
177295}
178296
297+ func TestGoSyntaxSkipZeroFields (t * testing.T ) {
298+ for _ , tt := range gosyntaxSkipZeroFields {
299+ s := fmt .Sprintf ("%# +v" , Formatter (tt .v ))
300+ if tt .s != s {
301+ t .Errorf ("expected %q" , tt .s )
302+ t .Errorf ("got %q" , s )
303+ t .Errorf ("expraw\n %s" , tt .s )
304+ t .Errorf ("gotraw\n %s" , s )
305+ }
306+ }
307+ }
308+
179309type I struct {
180310 i int
181311 R interface {}
0 commit comments