Merge pull request #104187 from j2gg0s/remove-unnecessary-map-in-converter

apimachinery: remove unused ignoredConversions map in converter.
This commit is contained in:
Kubernetes Prow Robot 2021-08-23 08:40:00 -07:00 committed by GitHub
commit a799768352
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 10 additions and 40 deletions

View File

@ -44,23 +44,16 @@ type Converter struct {
generatedConversionFuncs ConversionFuncs
// Set of conversions that should be treated as a no-op
ignoredConversions map[typePair]struct{}
ignoredUntypedConversions map[typePair]struct{}
// nameFunc is called to retrieve the name of a type; this name is used for the
// purpose of deciding whether two types match or not (i.e., will we attempt to
// do a conversion). The default returns the go type name.
nameFunc func(t reflect.Type) string
}
// NewConverter creates a new Converter object.
func NewConverter(nameFn NameFunc) *Converter {
// Arg NameFunc is just for backward compatibility.
func NewConverter(NameFunc) *Converter {
c := &Converter{
conversionFuncs: NewConversionFuncs(),
generatedConversionFuncs: NewConversionFuncs(),
ignoredConversions: make(map[typePair]struct{}),
ignoredUntypedConversions: make(map[typePair]struct{}),
nameFunc: nameFn,
}
c.RegisterUntypedConversionFunc(
(*[]byte)(nil), (*[]byte)(nil),
@ -192,7 +185,6 @@ func (c *Converter) RegisterIgnoredConversion(from, to interface{}) error {
if typeTo.Kind() != reflect.Ptr {
return fmt.Errorf("expected pointer arg for 'to' param 1, got: %v", typeTo)
}
c.ignoredConversions[typePair{typeFrom.Elem(), typeTo.Elem()}] = struct{}{}
c.ignoredUntypedConversions[typePair{typeFrom, typeTo}] = struct{}{}
return nil
}

View File

@ -24,7 +24,7 @@ import (
)
func TestConverter_byteSlice(t *testing.T) {
c := NewConverter(DefaultNameFunc)
c := NewConverter(nil)
src := []byte{1, 2, 3}
dest := []byte{}
err := c.Convert(&src, &dest, nil)
@ -37,7 +37,7 @@ func TestConverter_byteSlice(t *testing.T) {
}
func TestConverter_MismatchedTypes(t *testing.T) {
c := NewConverter(DefaultNameFunc)
c := NewConverter(nil)
convertFn := func(in *[]string, out *int, s Scope) error {
if str, err := strconv.Atoi((*in)[0]); err != nil {
@ -76,7 +76,7 @@ func TestConverter_CallsRegisteredFunctions(t *testing.T) {
Baz int
}
type C struct{}
c := NewConverter(DefaultNameFunc)
c := NewConverter(nil)
convertFn1 := func(in *A, out *B, s Scope) error {
out.Bar = in.Foo
out.Baz = in.Baz
@ -151,7 +151,7 @@ func TestConverter_IgnoredConversion(t *testing.T) {
type B struct{}
count := 0
c := NewConverter(DefaultNameFunc)
c := NewConverter(nil)
convertFn := func(in *A, out *B, s Scope) error {
count++
return nil
@ -180,7 +180,7 @@ func TestConverter_IgnoredConversion(t *testing.T) {
func TestConverter_GeneratedConversionOverridden(t *testing.T) {
type A struct{}
type B struct{}
c := NewConverter(DefaultNameFunc)
c := NewConverter(nil)
convertFn1 := func(in *A, out *B, s Scope) error {
return nil
}
@ -214,7 +214,7 @@ func TestConverter_GeneratedConversionOverridden(t *testing.T) {
func TestConverter_WithConversionOverridden(t *testing.T) {
type A struct{}
type B struct{}
c := NewConverter(DefaultNameFunc)
c := NewConverter(nil)
convertFn1 := func(in *A, out *B, s Scope) error {
return fmt.Errorf("conversion function should be overridden")
}
@ -260,7 +260,7 @@ func TestConverter_WithConversionOverridden(t *testing.T) {
func TestConverter_meta(t *testing.T) {
type Foo struct{ A string }
type Bar struct{ A string }
c := NewConverter(DefaultNameFunc)
c := NewConverter(nil)
checks := 0
convertFn1 := func(in *Foo, out *Bar, s Scope) error {
if s.Meta() == nil {

View File

@ -99,7 +99,7 @@ func NewScheme() *Scheme {
versionPriority: map[string][]string{},
schemeName: naming.GetNameFromCallsite(internalPackages...),
}
s.converter = conversion.NewConverter(s.nameFunc)
s.converter = conversion.NewConverter(nil)
// Enable couple default conversions by default.
utilruntime.Must(RegisterEmbeddedConversions(s))
@ -107,28 +107,6 @@ func NewScheme() *Scheme {
return s
}
// nameFunc returns the name of the type that we wish to use to determine when two types attempt
// a conversion. Defaults to the go name of the type if the type is not registered.
func (s *Scheme) nameFunc(t reflect.Type) string {
// find the preferred names for this type
gvks, ok := s.typeToGVK[t]
if !ok {
return t.Name()
}
for _, gvk := range gvks {
internalGV := gvk.GroupVersion()
internalGV.Version = APIVersionInternal // this is hacky and maybe should be passed in
internalGVK := internalGV.WithKind(gvk.Kind)
if internalType, exists := s.gvkToType[internalGVK]; exists {
return s.typeToGVK[internalType][0].Kind
}
}
return gvks[0].Kind
}
// Converter allows access to the converter for the scheme
func (s *Scheme) Converter() *conversion.Converter {
return s.converter