| 24 | } |
| 25 | |
| 26 | func (a *ArrayExpr) Eval(this vector.Any) vector.Any { |
| 27 | if len(a.elems) == 0 { |
| 28 | typ := a.sctx.LookupTypeArray(super.TypeNull) |
| 29 | offsets := make([]uint32, this.Len()+1) |
| 30 | nullVec := vector.NewNull(0) |
| 31 | return vector.NewArray(typ, offsets, nullVec) |
| 32 | } |
| 33 | var vecs []vector.Any |
| 34 | for _, e := range a.elems { |
| 35 | if e.Spread != nil { |
| 36 | vecs = append(vecs, e.Spread.Eval(this)) |
| 37 | } else { |
| 38 | vecs = append(vecs, e.Value.Eval(this)) |
| 39 | } |
| 40 | } |
| 41 | return vector.Apply(false, a.eval, vecs...) |
| 42 | } |
| 43 | |
| 44 | func (a *ArrayExpr) eval(in ...vector.Any) vector.Any { |
| 45 | offsets, inner := buildList(a.sctx, a.elems, in) |