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

Method Exec

interpreter/interpretable.go:940–968  ·  view source on GitHub ↗

Exec implements the InterpretableV2 interface method.

(frame *ExecutionFrame)

Source from the content-addressed store, hash-verified

938
939// Exec implements the InterpretableV2 interface method.
940func (fold *evalFold) Exec(frame *ExecutionFrame) ref.Val {
941 // Initialize the folder interface
942 f := newFolder(fold, frame)
943 defer releaseFolder(f)
944
945 foldRange := fold.iterRange.Exec(frame)
946 if types.IsUnknownOrError(foldRange) {
947 return foldRange
948 }
949 if fold.iterVar2 != "" {
950 var foldable traits.Foldable
951 switch r := foldRange.(type) {
952 case traits.Mapper:
953 foldable = types.ToFoldableMap(r)
954 case traits.Lister:
955 foldable = types.ToFoldableList(r)
956 default:
957 return types.NewErrWithNodeID(fold.ID(), "unsupported comprehension range type: %T", foldRange)
958 }
959 foldable.Fold(f)
960 return f.evalResult()
961 }
962
963 if !foldRange.Type().HasTrait(traits.IterableType) {
964 return types.ValOrErr(foldRange, "got '%T', expected iterable type", foldRange)
965 }
966 iterable := foldRange.(traits.Iterable)
967 return f.foldIterable(iterable)
968}
969
970// Eval implements the Interpretable interface method.
971func (fold *evalFold) Eval(ctx Activation) ref.Val {

Callers 1

EvalMethod · 0.95

Calls 14

IDMethod · 0.95
FoldMethod · 0.95
IsUnknownOrErrorFunction · 0.92
ToFoldableMapFunction · 0.92
ToFoldableListFunction · 0.92
NewErrWithNodeIDFunction · 0.92
ValOrErrFunction · 0.92
newFolderFunction · 0.85
releaseFolderFunction · 0.85
evalResultMethod · 0.80
foldIterableMethod · 0.80
ExecMethod · 0.65

Tested by

no test coverage detected