mirror of
https://github.com/ceph/ceph-csi.git
synced 2025-06-14 18:53:35 +00:00
rebase: update kubernetes to latest
updating the kubernetes release to the latest in main go.mod Signed-off-by: Madhu Rajanna <madhupr007@gmail.com>
This commit is contained in:
committed by
mergify[bot]
parent
63c4c05b35
commit
5a66991bb3
66
vendor/github.com/google/cel-go/ext/native.go
generated
vendored
66
vendor/github.com/google/cel-go/ext/native.go
generated
vendored
@ -96,17 +96,21 @@ func newNativeTypeProvider(adapter types.Adapter, provider types.Provider, refTy
|
||||
for _, refType := range refTypes {
|
||||
switch rt := refType.(type) {
|
||||
case reflect.Type:
|
||||
t, err := newNativeType(rt)
|
||||
result, err := newNativeTypes(rt)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
nativeTypes[t.TypeName()] = t
|
||||
for idx := range result {
|
||||
nativeTypes[result[idx].TypeName()] = result[idx]
|
||||
}
|
||||
case reflect.Value:
|
||||
t, err := newNativeType(rt.Type())
|
||||
result, err := newNativeTypes(rt.Type())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
nativeTypes[t.TypeName()] = t
|
||||
for idx := range result {
|
||||
nativeTypes[result[idx].TypeName()] = result[idx]
|
||||
}
|
||||
default:
|
||||
return nil, fmt.Errorf("unsupported native type: %v (%T) must be reflect.Type or reflect.Value", rt, rt)
|
||||
}
|
||||
@ -151,6 +155,24 @@ func (tp *nativeTypeProvider) FindStructType(typeName string) (*types.Type, bool
|
||||
return tp.baseProvider.FindStructType(typeName)
|
||||
}
|
||||
|
||||
// FindStructFieldNames looks up the type definition first from the native types, then from
|
||||
// the backing provider type set. If found, a set of field names corresponding to the type
|
||||
// will be returned.
|
||||
func (tp *nativeTypeProvider) FindStructFieldNames(typeName string) ([]string, bool) {
|
||||
if t, found := tp.nativeTypes[typeName]; found {
|
||||
fieldCount := t.refType.NumField()
|
||||
fields := make([]string, fieldCount)
|
||||
for i := 0; i < fieldCount; i++ {
|
||||
fields[i] = t.refType.Field(i).Name
|
||||
}
|
||||
return fields, true
|
||||
}
|
||||
if celTypeFields, found := tp.baseProvider.FindStructFieldNames(typeName); found {
|
||||
return celTypeFields, true
|
||||
}
|
||||
return tp.baseProvider.FindStructFieldNames(typeName)
|
||||
}
|
||||
|
||||
// FindStructFieldType looks up a native type's field definition, and if the type name is not a native
|
||||
// type then proxies to the composed types.Provider
|
||||
func (tp *nativeTypeProvider) FindStructFieldType(typeName, fieldName string) (*types.FieldType, bool) {
|
||||
@ -447,6 +469,42 @@ func (o *nativeObj) Value() any {
|
||||
return o.val
|
||||
}
|
||||
|
||||
func newNativeTypes(rawType reflect.Type) ([]*nativeType, error) {
|
||||
nt, err := newNativeType(rawType)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
result := []*nativeType{nt}
|
||||
|
||||
alreadySeen := make(map[string]struct{})
|
||||
var iterateStructMembers func(reflect.Type)
|
||||
iterateStructMembers = func(t reflect.Type) {
|
||||
if k := t.Kind(); k == reflect.Pointer || k == reflect.Slice || k == reflect.Array || k == reflect.Map {
|
||||
t = t.Elem()
|
||||
}
|
||||
if t.Kind() != reflect.Struct {
|
||||
return
|
||||
}
|
||||
if _, seen := alreadySeen[t.String()]; seen {
|
||||
return
|
||||
}
|
||||
alreadySeen[t.String()] = struct{}{}
|
||||
nt, ntErr := newNativeType(t)
|
||||
if ntErr != nil {
|
||||
err = ntErr
|
||||
return
|
||||
}
|
||||
result = append(result, nt)
|
||||
|
||||
for idx := 0; idx < t.NumField(); idx++ {
|
||||
iterateStructMembers(t.Field(idx).Type)
|
||||
}
|
||||
}
|
||||
iterateStructMembers(rawType)
|
||||
|
||||
return result, err
|
||||
}
|
||||
|
||||
func newNativeType(rawType reflect.Type) (*nativeType, error) {
|
||||
refType := rawType
|
||||
if refType.Kind() == reflect.Pointer {
|
||||
|
Reference in New Issue
Block a user