(elems []dag.RecordElem)
| 779 | } |
| 780 | |
| 781 | func recordElemsFieldsAndSpread(elems []dag.RecordElem) (map[string]dag.Expr, dag.Expr, bool) { |
| 782 | fields := map[string]dag.Expr{} |
| 783 | var spread dag.Expr |
| 784 | for i, e := range elems { |
| 785 | switch e := e.(type) { |
| 786 | case *dag.Field: |
| 787 | fields[e.Name] = e.Value |
| 788 | case *dag.Spread: |
| 789 | if i > 0 { |
| 790 | return nil, nil, false |
| 791 | } |
| 792 | spread = e.Expr |
| 793 | case *dag.None: |
| 794 | // This doesn't work right. Just don't optimize these for now. |
| 795 | return nil, nil, false |
| 796 | default: |
| 797 | panic(e) |
| 798 | } |
| 799 | } |
| 800 | return fields, spread, true |
| 801 | } |
| 802 | |
| 803 | func replaceSortAndHeadOrTailWithTop(seq dag.Seq) dag.Seq { |
| 804 | walkT(reflect.ValueOf(&seq), func(seq dag.Seq) dag.Seq { |
no outgoing calls
no test coverage detected