Bump cel-go to v0.10.0
This commit is contained in:
57
vendor/github.com/google/cel-go/interpreter/attributes.go
generated
vendored
57
vendor/github.com/google/cel-go/interpreter/attributes.go
generated
vendored
@@ -15,7 +15,6 @@
|
||||
package interpreter
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"math"
|
||||
|
||||
@@ -487,9 +486,7 @@ func (a *maybeAttribute) AddQualifier(qual Qualifier) (Attribute, error) {
|
||||
}
|
||||
}
|
||||
// Next, ensure the most specific variable / type reference is searched first.
|
||||
a.attrs = append([]NamespacedAttribute{
|
||||
a.fac.AbsoluteAttribute(qual.ID(), augmentedNames...),
|
||||
}, a.attrs...)
|
||||
a.attrs = append([]NamespacedAttribute{a.fac.AbsoluteAttribute(qual.ID(), augmentedNames...)}, a.attrs...)
|
||||
return a, nil
|
||||
}
|
||||
|
||||
@@ -628,6 +625,10 @@ func newQualifier(adapter ref.TypeAdapter, id int64, v interface{}) (Qualifier,
|
||||
qual = &uintQualifier{id: id, value: val, celValue: types.Uint(val), adapter: adapter}
|
||||
case bool:
|
||||
qual = &boolQualifier{id: id, value: val, celValue: types.Bool(val), adapter: adapter}
|
||||
case float32:
|
||||
qual = &doubleQualifier{id: id, value: float64(val), celValue: types.Double(val), adapter: adapter}
|
||||
case float64:
|
||||
qual = &doubleQualifier{id: id, value: val, celValue: types.Double(val), adapter: adapter}
|
||||
case types.String:
|
||||
qual = &stringQualifier{id: id, value: string(val), celValue: val, adapter: adapter}
|
||||
case types.Int:
|
||||
@@ -714,9 +715,6 @@ func (q *stringQualifier) Qualify(vars Activation, obj interface{}) (interface{}
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if types.IsUnknown(elem) {
|
||||
return elem, nil
|
||||
}
|
||||
return elem, nil
|
||||
}
|
||||
if isMap && !isKey {
|
||||
@@ -829,9 +827,6 @@ func (q *intQualifier) Qualify(vars Activation, obj interface{}) (interface{}, e
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if types.IsUnknown(elem) {
|
||||
return elem, nil
|
||||
}
|
||||
return elem, nil
|
||||
}
|
||||
if isMap && !isKey {
|
||||
@@ -891,9 +886,6 @@ func (q *uintQualifier) Qualify(vars Activation, obj interface{}) (interface{},
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if types.IsUnknown(elem) {
|
||||
return elem, nil
|
||||
}
|
||||
return elem, nil
|
||||
}
|
||||
if isMap && !isKey {
|
||||
@@ -942,9 +934,6 @@ func (q *boolQualifier) Qualify(vars Activation, obj interface{}) (interface{},
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if types.IsUnknown(elem) {
|
||||
return elem, nil
|
||||
}
|
||||
return elem, nil
|
||||
}
|
||||
if !isKey {
|
||||
@@ -996,6 +985,37 @@ func (q *fieldQualifier) Cost() (min, max int64) {
|
||||
return 0, 0
|
||||
}
|
||||
|
||||
// doubleQualifier qualifies a CEL object, map, or list using a double value.
|
||||
//
|
||||
// This qualifier is used for working with dynamic data like JSON or protobuf.Any where the value
|
||||
// type may not be known ahead of time and may not conform to the standard types supported as valid
|
||||
// protobuf map key types.
|
||||
type doubleQualifier struct {
|
||||
id int64
|
||||
value float64
|
||||
celValue ref.Val
|
||||
adapter ref.TypeAdapter
|
||||
}
|
||||
|
||||
// ID is an implementation of the Qualifier interface method.
|
||||
func (q *doubleQualifier) ID() int64 {
|
||||
return q.id
|
||||
}
|
||||
|
||||
// Qualify implements the Qualifier interface method.
|
||||
func (q *doubleQualifier) Qualify(vars Activation, obj interface{}) (interface{}, error) {
|
||||
switch o := obj.(type) {
|
||||
case types.Unknown:
|
||||
return o, nil
|
||||
default:
|
||||
elem, err := refResolve(q.adapter, q.celValue, obj)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return elem, nil
|
||||
}
|
||||
}
|
||||
|
||||
// refResolve attempts to convert the value to a CEL value and then uses reflection methods
|
||||
// to try and resolve the qualifier.
|
||||
func refResolve(adapter ref.TypeAdapter, idx ref.Val, obj interface{}) (ref.Val, error) {
|
||||
@@ -1006,9 +1026,6 @@ func refResolve(adapter ref.TypeAdapter, idx ref.Val, obj interface{}) (ref.Val,
|
||||
if !found {
|
||||
return nil, fmt.Errorf("no such key: %v", idx)
|
||||
}
|
||||
if types.IsError(elem) {
|
||||
return nil, elem.(*types.Err)
|
||||
}
|
||||
return elem, nil
|
||||
}
|
||||
indexer, isIndexer := celVal.(traits.Indexer)
|
||||
@@ -1028,5 +1045,5 @@ func refResolve(adapter ref.TypeAdapter, idx ref.Val, obj interface{}) (ref.Val,
|
||||
if types.IsError(celVal) {
|
||||
return nil, celVal.(*types.Err)
|
||||
}
|
||||
return nil, errors.New("no such overload")
|
||||
return nil, fmt.Errorf("no such key: %v", idx)
|
||||
}
|
||||
|
Reference in New Issue
Block a user