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

Method Exec

interpreter/interpretable.go:807–833  ·  view source on GitHub ↗

Exec implements the InterpretableV2 interface method.

(frame *ExecutionFrame)

Source from the content-addressed store, hash-verified

805
806// Exec implements the InterpretableV2 interface method.
807func (m *evalMap) Exec(frame *ExecutionFrame) ref.Val {
808 entries := make(map[ref.Val]ref.Val, len(m.keys))
809 // If any argument is unknown or error early terminate.
810 for i, key := range m.keys {
811 keyVal := key.Exec(frame)
812 if types.IsUnknownOrError(keyVal) {
813 return keyVal
814 }
815 valVal := m.vals[i].Exec(frame)
816 if types.IsUnknownOrError(valVal) {
817 return valVal
818 }
819 if m.hasOptionals && m.optionals[i] {
820 optVal, ok := valVal.(*types.Optional)
821 if !ok {
822 return types.LabelErrNode(m.id, invalidOptionalEntryInit(keyVal, valVal))
823 }
824 if !optVal.HasValue() {
825 delete(entries, keyVal)
826 continue
827 }
828 valVal = optVal.GetValue()
829 }
830 entries[keyVal] = valVal
831 }
832 return types.NewRefValMap(m.adapter, entries)
833}
834
835// Eval implements the Interpretable interface method.
836func (m *evalMap) Eval(ctx Activation) ref.Val {

Callers 1

EvalMethod · 0.95

Calls 7

IsUnknownOrErrorFunction · 0.92
LabelErrNodeFunction · 0.92
NewRefValMapFunction · 0.92
invalidOptionalEntryInitFunction · 0.85
HasValueMethod · 0.80
GetValueMethod · 0.80
ExecMethod · 0.65

Tested by

no test coverage detected