mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-24 12:15:52 +00:00
Enable the empty list sum support.
This commit is contained in:
parent
ae6243b431
commit
2f0e5af40b
@ -182,38 +182,6 @@ func isSorted(val ref.Val) ref.Val {
|
|||||||
return types.True
|
return types.True
|
||||||
}
|
}
|
||||||
|
|
||||||
func dynSum() functions.UnaryOp {
|
|
||||||
return func(val ref.Val) ref.Val {
|
|
||||||
iterable, ok := val.(traits.Iterable)
|
|
||||||
if !ok {
|
|
||||||
return types.MaybeNoSuchOverloadErr(val)
|
|
||||||
}
|
|
||||||
it := iterable.Iterator()
|
|
||||||
var initval ref.Val
|
|
||||||
if it.HasNext() == types.True {
|
|
||||||
first := it.Next()
|
|
||||||
switch first.Type() {
|
|
||||||
case types.IntType:
|
|
||||||
initval = types.Int(0)
|
|
||||||
case types.UintType:
|
|
||||||
initval = types.Uint(0)
|
|
||||||
case types.DoubleType:
|
|
||||||
initval = types.Double(0.0)
|
|
||||||
case types.DurationType:
|
|
||||||
initval = types.Duration{Duration: 0}
|
|
||||||
default:
|
|
||||||
return types.MaybeNoSuchOverloadErr(first)
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
initval = types.Int(0)
|
|
||||||
}
|
|
||||||
initFn := func() ref.Val {
|
|
||||||
return initval
|
|
||||||
}
|
|
||||||
return sum(initFn)(val)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func sum(init func() ref.Val) functions.UnaryOp {
|
func sum(init func() ref.Val) functions.UnaryOp {
|
||||||
return func(val ref.Val) ref.Val {
|
return func(val ref.Val) ref.Val {
|
||||||
i := init()
|
i := init()
|
||||||
|
@ -1605,8 +1605,7 @@ func TestValidationExpressions(t *testing.T) {
|
|||||||
"dyn([1, 2]).sum() == 3",
|
"dyn([1, 2]).sum() == 3",
|
||||||
"dyn([1.0, 2.0]).sum() == 3.0",
|
"dyn([1.0, 2.0]).sum() == 3.0",
|
||||||
|
|
||||||
// TODO: enable once type system fix it made to CEL
|
"[].sum() == 0", // An empty list returns an 0 int
|
||||||
//"[].sum() == 0", // An empty list returns an 0 int
|
|
||||||
},
|
},
|
||||||
errors: map[string]string{
|
errors: map[string]string{
|
||||||
// return an error for min/max on empty list
|
// return an error for min/max on empty list
|
||||||
|
Loading…
Reference in New Issue
Block a user