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

Method planCreateStruct

interpreter/planner.go:590–621  ·  view source on GitHub ↗

planCreateObj generates an object construction Interpretable.

(expr ast.Expr)

Source from the content-addressed store, hash-verified

588
589// planCreateObj generates an object construction Interpretable.
590func (p *planBuilder) planCreateStruct(expr ast.Expr) (InterpretableV2, error) {
591 obj := expr.AsStruct()
592 typeName, defined := p.resolveTypeName(obj.TypeName())
593 if !defined {
594 return nil, fmt.Errorf("unknown type: %s", obj.TypeName())
595 }
596 objFields := obj.Fields()
597 optionals := make([]bool, len(objFields))
598 fields := make([]string, len(objFields))
599 vals := make([]InterpretableV2, len(objFields))
600 hasOptionals := false
601 for i, f := range objFields {
602 field := f.AsStructField()
603 fields[i] = field.Name()
604 val, err := p.plan(field.Value())
605 if err != nil {
606 return nil, err
607 }
608 vals[i] = val
609 optionals[i] = field.IsOptional()
610 hasOptionals = hasOptionals || field.IsOptional()
611 }
612 return &evalObj{
613 id: expr.ID(),
614 typeName: typeName,
615 fields: fields,
616 vals: vals,
617 optionals: optionals,
618 hasOptionals: hasOptionals,
619 provider: p.provider,
620 }, nil
621}
622
623// planComprehension generates an Interpretable fold operation.
624func (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