Skip to content

Commit bcaab8c

Browse files
committed
Fix bug in ignoring untypes conversions
1 parent 7ab3e43 commit bcaab8c

File tree

1 file changed

+15
-7
lines changed

1 file changed

+15
-7
lines changed

staging/src/k8s.io/apimachinery/pkg/conversion/converter.go

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,8 @@ type Converter struct {
5454
generatedConversionFuncs ConversionFuncs
5555

5656
// Set of conversions that should be treated as a no-op
57-
ignoredConversions map[typePair]struct{}
57+
ignoredConversions map[typePair]struct{}
58+
ignoredUntypedConversions map[typePair]struct{}
5859

5960
// This is a map from a source field type and name, to a list of destination
6061
// field type and name.
@@ -83,12 +84,13 @@ type Converter struct {
8384
// NewConverter creates a new Converter object.
8485
func NewConverter(nameFn NameFunc) *Converter {
8586
c := &Converter{
86-
conversionFuncs: NewConversionFuncs(),
87-
generatedConversionFuncs: NewConversionFuncs(),
88-
ignoredConversions: make(map[typePair]struct{}),
89-
nameFunc: nameFn,
90-
structFieldDests: make(map[typeNamePair][]typeNamePair),
91-
structFieldSources: make(map[typeNamePair][]typeNamePair),
87+
conversionFuncs: NewConversionFuncs(),
88+
generatedConversionFuncs: NewConversionFuncs(),
89+
ignoredConversions: make(map[typePair]struct{}),
90+
ignoredUntypedConversions: make(map[typePair]struct{}),
91+
nameFunc: nameFn,
92+
structFieldDests: make(map[typeNamePair][]typeNamePair),
93+
structFieldSources: make(map[typeNamePair][]typeNamePair),
9294

9395
inputFieldMappingFuncs: make(map[reflect.Type]FieldMappingFunc),
9496
inputDefaultFlags: make(map[reflect.Type]FieldMatchingFlags),
@@ -377,6 +379,7 @@ func (c *Converter) RegisterIgnoredConversion(from, to interface{}) error {
377379
return fmt.Errorf("expected pointer arg for 'to' param 1, got: %v", typeTo)
378380
}
379381
c.ignoredConversions[typePair{typeFrom.Elem(), typeTo.Elem()}] = struct{}{}
382+
c.ignoredUntypedConversions[typePair{typeFrom, typeTo}] = struct{}{}
380383
return nil
381384
}
382385

@@ -459,6 +462,11 @@ func (c *Converter) doConversion(src, dest interface{}, flags FieldMatchingFlags
459462
flags: flags,
460463
meta: meta,
461464
}
465+
466+
// ignore conversions of this type
467+
if _, ok := c.ignoredUntypedConversions[pair]; ok {
468+
return nil
469+
}
462470
if fn, ok := c.conversionFuncs.untyped[pair]; ok {
463471
return fn(src, dest, scope)
464472
}

0 commit comments

Comments
 (0)