File tree 1 file changed +12
-7
lines changed
1 file changed +12
-7
lines changed Original file line number Diff line number Diff line change @@ -271,17 +271,22 @@ func generateRandomReflectValue(field reflect.Value) error {
271
271
return generateRandomReflectValue (field .Index (index ))
272
272
case reflect .Map :
273
273
mapKeys := field .MapKeys ()
274
+ var key reflect.Value
274
275
if len (mapKeys ) == 0 {
275
- return fmt .Errorf ("cannot generate random value for empty map" )
276
+ field .Set (reflect .MakeMap (field .Type ()))
277
+ key = reflect .New (field .Type ().Key ()).Elem ()
278
+ if err := generateRandomReflectValue (key ); err != nil {
279
+ return err
280
+ }
281
+ } else {
282
+ index := rand .Intn (len (mapKeys ))
283
+ key = mapKeys [index ]
276
284
}
277
- index := rand .Intn (len (mapKeys ))
278
- key := mapKeys [index ]
279
- oldVal := field .MapIndex (key )
280
- newVal := reflect .New (oldVal .Type ()).Elem ()
281
- if err := generateRandomReflectValue (newVal ); err != nil {
285
+ val := reflect .New (field .Type ().Elem ()).Elem ()
286
+ if err := generateRandomReflectValue (val ); err != nil {
282
287
return err
283
288
}
284
- field .SetMapIndex (key , newVal )
289
+ field .SetMapIndex (key , val )
285
290
case reflect .Ptr :
286
291
if field .IsNil () {
287
292
field .Set (reflect .New (field .Type ().Elem ()))
You can’t perform that action at this time.
0 commit comments