|
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.
|
@@ -572,40 +569,25 @@ func toUnstructured(sv, dv reflect.Value) error {
|
572 | 569 | return nil
|
573 | 570 | }
|
574 | 571 |
|
575 |
| - st, dt := sv.Type(), dv.Type() |
| 572 | + st := sv.Type() |
576 | 573 | switch st.Kind() {
|
577 | 574 | case reflect.String:
|
578 |
| - if dt.Kind() == reflect.Interface && dv.NumMethod() == 0 { |
579 |
| - dv.Set(reflect.New(stringType)) |
580 |
| - } |
581 | 575 | dv.Set(reflect.ValueOf(sv.String()))
|
582 | 576 | return nil
|
583 | 577 | case reflect.Bool:
|
584 |
| - if dt.Kind() == reflect.Interface && dv.NumMethod() == 0 { |
585 |
| - dv.Set(reflect.New(boolType)) |
586 |
| - } |
587 | 578 | dv.Set(reflect.ValueOf(sv.Bool()))
|
588 | 579 | return nil
|
589 | 580 | case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:
|
590 |
| - if dt.Kind() == reflect.Interface && dv.NumMethod() == 0 { |
591 |
| - dv.Set(reflect.New(int64Type)) |
592 |
| - } |
593 | 581 | dv.Set(reflect.ValueOf(sv.Int()))
|
594 | 582 | return nil
|
595 | 583 | case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64:
|
596 | 584 | uVal := sv.Uint()
|
597 | 585 | if uVal > math.MaxInt64 {
|
598 | 586 | return fmt.Errorf("unsigned value %d does not fit into int64 (overflow)", uVal)
|
599 | 587 | }
|
600 |
| - if dt.Kind() == reflect.Interface && dv.NumMethod() == 0 { |
601 |
| - dv.Set(reflect.New(int64Type)) |
602 |
| - } |
603 | 588 | dv.Set(reflect.ValueOf(int64(uVal)))
|
604 | 589 | return nil
|
605 | 590 | case reflect.Float32, reflect.Float64:
|
606 |
| - if dt.Kind() == reflect.Interface && dv.NumMethod() == 0 { |
607 |
| - dv.Set(reflect.New(float64Type)) |
608 |
| - } |
609 | 591 | dv.Set(reflect.ValueOf(sv.Float()))
|
610 | 592 | return nil
|
611 | 593 | case reflect.Map:
|
|
0 commit comments