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

Method Exec

interpreter/interpretable.go:982–1010  ·  view source on GitHub ↗

Exec implements the InterpretableV2 interface method.

(frame *ExecutionFrame)

Source from the content-addressed store, hash-verified

980
981// Exec implements the InterpretableV2 interface method.
982func (fold *evalFold) Exec(frame *ExecutionFrame) ref.Val {
983 // Initialize the folder interface
984 f := newFolder(fold, frame)
985 defer releaseFolder(f)
986
987 foldRange := fold.iterRange.Exec(frame)
988 if types.IsUnknownOrError(foldRange) {
989 return foldRange
990 }
991 if fold.iterVar2 != "" {
992 var foldable traits.Foldable
993 switch r := foldRange.(type) {
994 case traits.Mapper:
995 foldable = types.ToFoldableMap(r)
996 case traits.Lister:
997 foldable = types.ToFoldableList(r)
998 default:
999 return types.NewErrWithNodeID(fold.ID(), "unsupported comprehension range type: %T", foldRange)
1000 }
1001 foldable.Fold(f)
1002 return f.evalResult()
1003 }
1004
1005 if !foldRange.Type().HasTrait(traits.IterableType) {
1006 return types.ValOrErr(foldRange, "got '%T', expected iterable type", foldRange)
1007 }
1008 iterable := foldRange.(traits.Iterable)
1009 return f.foldIterable(iterable)
1010}
1011
1012// Eval implements the Interpretable interface method.
1013func (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