MCPcopy Create free account
hub / github.com/cel-expr/cel-go / Exec

Method Exec

interpreter/interpretable.go:390–420  ·  view source on GitHub ↗

Exec implements the InterpretableV2 interface method.

(frame *ExecutionFrame)

Source from the content-addressed store, hash-verified

388
389// Exec implements the InterpretableV2 interface method.
390func (and *evalAnd) Exec(frame *ExecutionFrame) ref.Val {
391 var err ref.Val = nil
392 var unk *types.Unknown
393 for _, term := range and.terms {
394 val := term.Exec(frame)
395 boolVal, ok := val.(types.Bool)
396 // short-circuit on false.
397 if ok && boolVal == types.False {
398 return types.False
399 }
400 if !ok {
401 isUnk := false
402 unk, isUnk = types.MaybeMergeUnknowns(val, unk)
403 if !isUnk && err == nil {
404 if types.IsError(val) {
405 err = val
406 } else {
407 err = types.MaybeNoSuchOverloadErr(val)
408 }
409 err = types.LabelErrNode(and.id, err)
410 }
411 }
412 }
413 if unk != nil {
414 return unk
415 }
416 if err != nil {
417 return err
418 }
419 return types.True
420}
421
422// Eval implements the Interpretable interface method.
423func (and *evalAnd) Eval(ctx Activation) ref.Val {

Callers 1

EvalMethod · 0.95

Calls 5

MaybeMergeUnknownsFunction · 0.92
IsErrorFunction · 0.92
MaybeNoSuchOverloadErrFunction · 0.92
LabelErrNodeFunction · 0.92
ExecMethod · 0.65

Tested by

no test coverage detected