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

Method planCreateStruct

interpreter/planner.go:609–640  ·  view source on GitHub ↗

planCreateObj generates an object construction Interpretable.

(expr ast.Expr)

Source from the content-addressed store, hash-verified

607
608// planCreateObj generates an object construction Interpretable.
609func (p *planBuilder) planCreateStruct(expr ast.Expr) (InterpretableV2, error) {
610 obj := expr.AsStruct()
611 typeName, defined := p.resolveTypeName(obj.TypeName())
612 if !defined {
613 return nil, fmt.Errorf("unknown type: %s", obj.TypeName())
614 }
615 objFields := obj.Fields()
616 optionals := make([]bool, len(objFields))
617 fields := make([]string, len(objFields))
618 vals := make([]InterpretableV2, len(objFields))
619 hasOptionals := false
620 for i, f := range objFields {
621 field := f.AsStructField()
622 fields[i] = field.Name()
623 val, err := p.plan(field.Value())
624 if err != nil {
625 return nil, err
626 }
627 vals[i] = val
628 optionals[i] = field.IsOptional()
629 hasOptionals = hasOptionals || field.IsOptional()
630 }
631 return &evalObj{
632 id: expr.ID(),
633 typeName: typeName,
634 fields: fields,
635 vals: vals,
636 optionals: optionals,
637 hasOptionals: hasOptionals,
638 provider: p.provider,
639 }, nil
640}
641
642// planComprehension generates an Interpretable fold operation.
643func (p *planBuilder) planComprehension(expr ast.Expr) (InterpretableV2, error) {

Callers 1

planMethod · 0.95

Calls 10

resolveTypeNameMethod · 0.95
planMethod · 0.95
AsStructMethod · 0.65
TypeNameMethod · 0.65
FieldsMethod · 0.65
AsStructFieldMethod · 0.65
NameMethod · 0.65
ValueMethod · 0.65
IsOptionalMethod · 0.65
IDMethod · 0.65

Tested by

no test coverage detected