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

Function protoDeclToFunction

tools/compiler/compiler.go:406–433  ·  view source on GitHub ↗
(decl *celpb.Decl)

Source from the content-addressed store, hash-verified

404}
405
406func protoDeclToFunction(decl *celpb.Decl) (*env.Function, error) {
407 declFn := decl.GetFunction()
408 if declFn == nil {
409 return nil, nil
410 }
411 overloads := make([]*env.Overload, 0, len(declFn.GetOverloads()))
412 for _, o := range declFn.GetOverloads() {
413 args := make([]*env.TypeDesc, 0, len(o.GetParams()))
414 for _, p := range o.GetParams() {
415 t, err := types.ProtoAsType(p)
416 if err != nil {
417 return nil, err
418 }
419 args = append(args, env.SerializeTypeDesc(t))
420 }
421 res, err := types.ProtoAsType(o.GetResultType())
422 if err != nil {
423 return nil, err
424 }
425 ret := env.SerializeTypeDesc(res)
426 if o.IsInstanceFunction {
427 overloads = append(overloads, env.NewMemberOverload(o.GetOverloadId(), args[0], args[1:], ret))
428 } else {
429 overloads = append(overloads, env.NewOverload(o.GetOverloadId(), args, ret))
430 }
431 }
432 return env.NewFunction(decl.GetName(), overloads...), nil
433}
434
435// TypeDescriptorSetFile returns an EnvOption which loads type descriptors from a file.
436// The file must be in binary format.

Callers 2

envToStdLibFunction · 0.85

Calls 7

ProtoAsTypeFunction · 0.92
SerializeTypeDescFunction · 0.92
NewMemberOverloadFunction · 0.92
NewOverloadFunction · 0.92
NewFunctionFunction · 0.92
GetParamsMethod · 0.65
GetNameMethod · 0.45

Tested by

no test coverage detected