planCreateStruct generates a map or object construction Interpretable.
(expr ast.Expr)
| 532 | |
| 533 | // planCreateStruct generates a map or object construction Interpretable. |
| 534 | func (p *planBuilder) planCreateMap(expr ast.Expr) (InterpretableV2, error) { |
| 535 | m := expr.AsMap() |
| 536 | entries := m.Entries() |
| 537 | optionals := make([]bool, len(entries)) |
| 538 | keys := make([]InterpretableV2, len(entries)) |
| 539 | vals := make([]InterpretableV2, len(entries)) |
| 540 | hasOptionals := false |
| 541 | for i, e := range entries { |
| 542 | entry := e.AsMapEntry() |
| 543 | keyVal, err := p.plan(entry.Key()) |
| 544 | if err != nil { |
| 545 | return nil, err |
| 546 | } |
| 547 | keys[i] = keyVal |
| 548 | |
| 549 | valVal, err := p.plan(entry.Value()) |
| 550 | if err != nil { |
| 551 | return nil, err |
| 552 | } |
| 553 | vals[i] = valVal |
| 554 | optionals[i] = entry.IsOptional() |
| 555 | hasOptionals = hasOptionals || entry.IsOptional() |
| 556 | } |
| 557 | return &evalMap{ |
| 558 | id: expr.ID(), |
| 559 | keys: keys, |
| 560 | vals: vals, |
| 561 | optionals: optionals, |
| 562 | hasOptionals: hasOptionals, |
| 563 | adapter: p.adapter, |
| 564 | }, nil |
| 565 | } |
| 566 | |
| 567 | // planCreateObj generates an object construction Interpretable. |
| 568 | func (p *planBuilder) planCreateStruct(expr ast.Expr) (InterpretableV2, error) { |
no test coverage detected