mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-23 19:56:01 +00:00
Merge pull request #104187 from j2gg0s/remove-unnecessary-map-in-converter
apimachinery: remove unused ignoredConversions map in converter.
This commit is contained in:
commit
a799768352
@ -44,23 +44,16 @@ type Converter struct {
|
|||||||
generatedConversionFuncs ConversionFuncs
|
generatedConversionFuncs ConversionFuncs
|
||||||
|
|
||||||
// Set of conversions that should be treated as a no-op
|
// Set of conversions that should be treated as a no-op
|
||||||
ignoredConversions map[typePair]struct{}
|
|
||||||
ignoredUntypedConversions 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.
|
// NewConverter creates a new Converter object.
|
||||||
func NewConverter(nameFn NameFunc) *Converter {
|
// Arg NameFunc is just for backward compatibility.
|
||||||
|
func NewConverter(NameFunc) *Converter {
|
||||||
c := &Converter{
|
c := &Converter{
|
||||||
conversionFuncs: NewConversionFuncs(),
|
conversionFuncs: NewConversionFuncs(),
|
||||||
generatedConversionFuncs: NewConversionFuncs(),
|
generatedConversionFuncs: NewConversionFuncs(),
|
||||||
ignoredConversions: make(map[typePair]struct{}),
|
|
||||||
ignoredUntypedConversions: make(map[typePair]struct{}),
|
ignoredUntypedConversions: make(map[typePair]struct{}),
|
||||||
nameFunc: nameFn,
|
|
||||||
}
|
}
|
||||||
c.RegisterUntypedConversionFunc(
|
c.RegisterUntypedConversionFunc(
|
||||||
(*[]byte)(nil), (*[]byte)(nil),
|
(*[]byte)(nil), (*[]byte)(nil),
|
||||||
@ -192,7 +185,6 @@ func (c *Converter) RegisterIgnoredConversion(from, to interface{}) error {
|
|||||||
if typeTo.Kind() != reflect.Ptr {
|
if typeTo.Kind() != reflect.Ptr {
|
||||||
return fmt.Errorf("expected pointer arg for 'to' param 1, got: %v", typeTo)
|
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{}{}
|
c.ignoredUntypedConversions[typePair{typeFrom, typeTo}] = struct{}{}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
@ -24,7 +24,7 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func TestConverter_byteSlice(t *testing.T) {
|
func TestConverter_byteSlice(t *testing.T) {
|
||||||
c := NewConverter(DefaultNameFunc)
|
c := NewConverter(nil)
|
||||||
src := []byte{1, 2, 3}
|
src := []byte{1, 2, 3}
|
||||||
dest := []byte{}
|
dest := []byte{}
|
||||||
err := c.Convert(&src, &dest, nil)
|
err := c.Convert(&src, &dest, nil)
|
||||||
@ -37,7 +37,7 @@ func TestConverter_byteSlice(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestConverter_MismatchedTypes(t *testing.T) {
|
func TestConverter_MismatchedTypes(t *testing.T) {
|
||||||
c := NewConverter(DefaultNameFunc)
|
c := NewConverter(nil)
|
||||||
|
|
||||||
convertFn := func(in *[]string, out *int, s Scope) error {
|
convertFn := func(in *[]string, out *int, s Scope) error {
|
||||||
if str, err := strconv.Atoi((*in)[0]); err != nil {
|
if str, err := strconv.Atoi((*in)[0]); err != nil {
|
||||||
@ -76,7 +76,7 @@ func TestConverter_CallsRegisteredFunctions(t *testing.T) {
|
|||||||
Baz int
|
Baz int
|
||||||
}
|
}
|
||||||
type C struct{}
|
type C struct{}
|
||||||
c := NewConverter(DefaultNameFunc)
|
c := NewConverter(nil)
|
||||||
convertFn1 := func(in *A, out *B, s Scope) error {
|
convertFn1 := func(in *A, out *B, s Scope) error {
|
||||||
out.Bar = in.Foo
|
out.Bar = in.Foo
|
||||||
out.Baz = in.Baz
|
out.Baz = in.Baz
|
||||||
@ -151,7 +151,7 @@ func TestConverter_IgnoredConversion(t *testing.T) {
|
|||||||
type B struct{}
|
type B struct{}
|
||||||
|
|
||||||
count := 0
|
count := 0
|
||||||
c := NewConverter(DefaultNameFunc)
|
c := NewConverter(nil)
|
||||||
convertFn := func(in *A, out *B, s Scope) error {
|
convertFn := func(in *A, out *B, s Scope) error {
|
||||||
count++
|
count++
|
||||||
return nil
|
return nil
|
||||||
@ -180,7 +180,7 @@ func TestConverter_IgnoredConversion(t *testing.T) {
|
|||||||
func TestConverter_GeneratedConversionOverridden(t *testing.T) {
|
func TestConverter_GeneratedConversionOverridden(t *testing.T) {
|
||||||
type A struct{}
|
type A struct{}
|
||||||
type B struct{}
|
type B struct{}
|
||||||
c := NewConverter(DefaultNameFunc)
|
c := NewConverter(nil)
|
||||||
convertFn1 := func(in *A, out *B, s Scope) error {
|
convertFn1 := func(in *A, out *B, s Scope) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
@ -214,7 +214,7 @@ func TestConverter_GeneratedConversionOverridden(t *testing.T) {
|
|||||||
func TestConverter_WithConversionOverridden(t *testing.T) {
|
func TestConverter_WithConversionOverridden(t *testing.T) {
|
||||||
type A struct{}
|
type A struct{}
|
||||||
type B struct{}
|
type B struct{}
|
||||||
c := NewConverter(DefaultNameFunc)
|
c := NewConverter(nil)
|
||||||
convertFn1 := func(in *A, out *B, s Scope) error {
|
convertFn1 := func(in *A, out *B, s Scope) error {
|
||||||
return fmt.Errorf("conversion function should be overridden")
|
return fmt.Errorf("conversion function should be overridden")
|
||||||
}
|
}
|
||||||
@ -260,7 +260,7 @@ func TestConverter_WithConversionOverridden(t *testing.T) {
|
|||||||
func TestConverter_meta(t *testing.T) {
|
func TestConverter_meta(t *testing.T) {
|
||||||
type Foo struct{ A string }
|
type Foo struct{ A string }
|
||||||
type Bar struct{ A string }
|
type Bar struct{ A string }
|
||||||
c := NewConverter(DefaultNameFunc)
|
c := NewConverter(nil)
|
||||||
checks := 0
|
checks := 0
|
||||||
convertFn1 := func(in *Foo, out *Bar, s Scope) error {
|
convertFn1 := func(in *Foo, out *Bar, s Scope) error {
|
||||||
if s.Meta() == nil {
|
if s.Meta() == nil {
|
||||||
|
@ -99,7 +99,7 @@ func NewScheme() *Scheme {
|
|||||||
versionPriority: map[string][]string{},
|
versionPriority: map[string][]string{},
|
||||||
schemeName: naming.GetNameFromCallsite(internalPackages...),
|
schemeName: naming.GetNameFromCallsite(internalPackages...),
|
||||||
}
|
}
|
||||||
s.converter = conversion.NewConverter(s.nameFunc)
|
s.converter = conversion.NewConverter(nil)
|
||||||
|
|
||||||
// Enable couple default conversions by default.
|
// Enable couple default conversions by default.
|
||||||
utilruntime.Must(RegisterEmbeddedConversions(s))
|
utilruntime.Must(RegisterEmbeddedConversions(s))
|
||||||
@ -107,28 +107,6 @@ func NewScheme() *Scheme {
|
|||||||
return s
|
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
|
// Converter allows access to the converter for the scheme
|
||||||
func (s *Scheme) Converter() *conversion.Converter {
|
func (s *Scheme) Converter() *conversion.Converter {
|
||||||
return s.converter
|
return s.converter
|
||||||
|
Loading…
Reference in New Issue
Block a user