(decl *celpb.Decl)
| 404 | } |
| 405 | |
| 406 | func 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. |
no test coverage detected