|
72 | 72 | unmarshalerType = reflect.TypeOf(new(encodingjson.Unmarshaler)).Elem()
|
73 | 73 | mapStringInterfaceType = reflect.TypeOf(map[string]interface{}{})
|
74 | 74 | stringType = reflect.TypeOf(string(""))
|
75 |
| - int64Type = reflect.TypeOf(int64(0)) |
76 |
| - float64Type = reflect.TypeOf(float64(0)) |
77 |
| - boolType = reflect.TypeOf(bool(false)) |
78 | 75 | fieldCache = newFieldsCache()
|
79 | 76 |
|
80 | 77 | // DefaultUnstructuredConverter performs unstructured to Go typed object conversions.
|
@@ -571,40 +568,25 @@ func toUnstructured(sv, dv reflect.Value) error {
|
571 | 568 | return nil
|
572 | 569 | }
|
573 | 570 |
|
574 |
| - st, dt := sv.Type(), dv.Type() |
| 571 | + st := sv.Type() |
575 | 572 | switch st.Kind() {
|
576 | 573 | case reflect.String:
|
577 |
| - if dt.Kind() == reflect.Interface && dv.NumMethod() == 0 { |
578 |
| - dv.Set(reflect.New(stringType)) |
579 |
| - } |
580 | 574 | dv.Set(reflect.ValueOf(sv.String()))
|
581 | 575 | return nil
|
582 | 576 | case reflect.Bool:
|
583 |
| - if dt.Kind() == reflect.Interface && dv.NumMethod() == 0 { |
584 |
| - dv.Set(reflect.New(boolType)) |
585 |
| - } |
586 | 577 | dv.Set(reflect.ValueOf(sv.Bool()))
|
587 | 578 | return nil
|
588 | 579 | case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:
|
589 |
| - if dt.Kind() == reflect.Interface && dv.NumMethod() == 0 { |
590 |
| - dv.Set(reflect.New(int64Type)) |
591 |
| - } |
592 | 580 | dv.Set(reflect.ValueOf(sv.Int()))
|
593 | 581 | return nil
|
594 | 582 | case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64:
|
595 | 583 | uVal := sv.Uint()
|
596 | 584 | if uVal > math.MaxInt64 {
|
597 | 585 | return fmt.Errorf("unsigned value %d does not fit into int64 (overflow)", uVal)
|
598 | 586 | }
|
599 |
| - if dt.Kind() == reflect.Interface && dv.NumMethod() == 0 { |
600 |
| - dv.Set(reflect.New(int64Type)) |
601 |
| - } |
602 | 587 | dv.Set(reflect.ValueOf(int64(uVal)))
|
603 | 588 | return nil
|
604 | 589 | case reflect.Float32, reflect.Float64:
|
605 |
| - if dt.Kind() == reflect.Interface && dv.NumMethod() == 0 { |
606 |
| - dv.Set(reflect.New(float64Type)) |
607 |
| - } |
608 | 590 | dv.Set(reflect.ValueOf(sv.Float()))
|
609 | 591 | return nil
|
610 | 592 | case reflect.Map:
|
|
0 commit comments