@@ -160,14 +160,11 @@ type FieldMappingFunc func(key string, sourceTag, destTag reflect.StructTag) (so
160
160
161
161
func NewConversionFuncs () ConversionFuncs {
162
162
return ConversionFuncs {
163
- fns : make (map [typePair ]reflect.Value ),
164
163
untyped : make (map [typePair ]ConversionFunc ),
165
164
}
166
165
}
167
166
168
167
type ConversionFuncs struct {
169
- // FIXME: Remove.
170
- fns map [typePair ]reflect.Value
171
168
untyped map [typePair ]ConversionFunc
172
169
}
173
170
@@ -190,12 +187,6 @@ func (c ConversionFuncs) AddUntyped(a, b interface{}, fn ConversionFunc) error {
190
187
// both other and c, with other conversions taking precedence.
191
188
func (c ConversionFuncs ) Merge (other ConversionFuncs ) ConversionFuncs {
192
189
merged := NewConversionFuncs ()
193
- for k , v := range c .fns {
194
- merged .fns [k ] = v
195
- }
196
- for k , v := range other .fns {
197
- merged .fns [k ] = v
198
- }
199
190
for k , v := range c .untyped {
200
191
merged .untyped [k ] = v
201
192
}
@@ -493,35 +484,6 @@ func (c *Converter) doConversion(src, dest interface{}, flags FieldMatchingFlags
493
484
return f (sv , dv , scope )
494
485
}
495
486
496
- // callCustom calls 'custom' with sv & dv. custom must be a conversion function.
497
- func (c * Converter ) callCustom (sv , dv , custom reflect.Value , scope * scope ) error {
498
- if ! sv .CanAddr () {
499
- sv2 := reflect .New (sv .Type ())
500
- sv2 .Elem ().Set (sv )
501
- sv = sv2
502
- } else {
503
- sv = sv .Addr ()
504
- }
505
- if ! dv .CanAddr () {
506
- if ! dv .CanSet () {
507
- return scope .errorf ("can't addr or set dest." )
508
- }
509
- dvOrig := dv
510
- dv := reflect .New (dvOrig .Type ())
511
- defer func () { dvOrig .Set (dv ) }()
512
- } else {
513
- dv = dv .Addr ()
514
- }
515
- args := []reflect.Value {sv , dv , reflect .ValueOf (scope )}
516
- ret := custom .Call (args )[0 ].Interface ()
517
- // This convolution is necessary because nil interfaces won't convert
518
- // to errors.
519
- if ret == nil {
520
- return nil
521
- }
522
- return ret .(error )
523
- }
524
-
525
487
// callUntyped calls predefined conversion func.
526
488
func (c * Converter ) callUntyped (sv , dv reflect.Value , f ConversionFunc , scope * scope ) error {
527
489
if ! dv .CanAddr () {
@@ -553,19 +515,6 @@ func (c *Converter) convert(sv, dv reflect.Value, scope *scope) error {
553
515
}
554
516
555
517
// Convert sv to dv.
556
- if fv , ok := c .conversionFuncs .fns [pair ]; ok {
557
- if c .Debug != nil {
558
- c .Debug .Logf ("Calling custom conversion of '%v' to '%v'" , st , dt )
559
- }
560
- return c .callCustom (sv , dv , fv , scope )
561
- }
562
- if fv , ok := c .generatedConversionFuncs .fns [pair ]; ok {
563
- if c .Debug != nil {
564
- c .Debug .Logf ("Calling generated conversion of '%v' to '%v'" , st , dt )
565
- }
566
- return c .callCustom (sv , dv , fv , scope )
567
- }
568
-
569
518
pair = typePair {reflect .PtrTo (sv .Type ()), reflect .PtrTo (dv .Type ())}
570
519
if f , ok := c .conversionFuncs .untyped [pair ]; ok {
571
520
return c .callUntyped (sv , dv , f , scope )
0 commit comments