Skip to content

Commit 69543bd

Browse files
committed
remove crop(), fill(), fit(), order(), and shape()
cast() is generally sufficient though we may add a variant that doesn't add missing fields with a null value when casting records. runtime/sam/expr.ConstShaper has to stick around because it's used in runtime/sam/op/fuse. We can remove it in favor of runtime/sam/expr/function.cast after we enhance that latter to handle union-typed record fields in the target type.
1 parent c7dcd26 commit 69543bd

26 files changed

+0
-384
lines changed

compiler/parser/ztests/shape.yaml

Lines changed: 0 additions & 7 deletions
This file was deleted.

compiler/rungen/expr.go

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -308,9 +308,6 @@ func (b *Builder) compileAssignment(node *dag.Assignment) (expr.Assignment, erro
308308
}
309309

310310
func (b *Builder) compileCall(call *dag.CallExpr) (expr.Evaluator, error) {
311-
if tf := expr.NewShaperTransform(call.Tag); tf != 0 {
312-
return b.compileShaper(call.Args, tf)
313-
}
314311
// First check if call is to a user defined function, otherwise check for
315312
// builtin function.
316313
var fn expr.Function
@@ -361,18 +358,6 @@ func (b *Builder) compileMapCall(a *dag.MapCallExpr) (expr.Evaluator, error) {
361358
return expr.NewMapCall(b.sctx(), e, lambda), nil
362359
}
363360

364-
func (b *Builder) compileShaper(args []dag.Expr, tf expr.ShaperTransform) (expr.Evaluator, error) {
365-
field, err := b.compileExpr(args[0])
366-
if err != nil {
367-
return nil, err
368-
}
369-
typExpr, err := b.compileExpr(args[1])
370-
if err != nil {
371-
return nil, err
372-
}
373-
return expr.NewShaper(b.sctx(), field, typExpr, tf)
374-
}
375-
376361
func (b *Builder) compileExprs(in []dag.Expr) ([]expr.Evaluator, error) {
377362
var exprs []expr.Evaluator
378363
for _, e := range in {

compiler/rungen/vexpr.go

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -191,9 +191,6 @@ func (b *Builder) compileVamCall(call *dag.CallExpr) (vamexpr.Evaluator, error)
191191
if call.Tag == "cast" {
192192
return b.compileVamCast(call.Args)
193193
}
194-
if tf := expr.NewShaperTransform(call.Tag); tf != 0 {
195-
return b.compileVamShaper(call.Args, tf)
196-
}
197194
var fn vamexpr.Function
198195
if f, ok := b.funcs[call.Tag]; ok {
199196
var err error
@@ -256,14 +253,6 @@ func (b *Builder) compileVamCast(args []dag.Expr) (vamexpr.Evaluator, error) {
256253
return vamexpr.NewSamExpr(e), nil
257254
}
258255

259-
func (b *Builder) compileVamShaper(args []dag.Expr, tf expr.ShaperTransform) (vamexpr.Evaluator, error) {
260-
shaper, err := b.compileShaper(args, tf)
261-
if err != nil {
262-
return nil, err
263-
}
264-
return vamexpr.NewSamExpr(shaper), nil
265-
}
266-
267256
func (b *Builder) compileVamRecordExpr(e *dag.RecordExpr) (vamexpr.Evaluator, error) {
268257
var elems []vamexpr.RecordElem
269258
for _, elem := range e.Elems {

compiler/semantic/expr.go

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -724,11 +724,6 @@ func (t *translator) semCallByName(call *ast.Call, name string, args []sem.Expr)
724724
}
725725
nameLower := strings.ToLower(name)
726726
switch {
727-
case expr.NewShaperTransform(nameLower) != 0:
728-
if err := function.CheckArgCount(nargs, 2, 2); err != nil {
729-
t.error(call, err)
730-
return badExpr()
731-
}
732727
case nameLower == "map":
733728
return t.semMapCall(call, args)
734729
case nameLower == "grep":

compiler/ztests/badshaper.yaml

Lines changed: 0 additions & 21 deletions
This file was deleted.

runtime/sam/expr/shaper.go

Lines changed: 0 additions & 76 deletions
Original file line numberDiff line numberDiff line change
@@ -25,82 +25,6 @@ const (
2525
Order
2626
)
2727

28-
func NewShaperTransform(s string) ShaperTransform {
29-
switch s {
30-
case "crop":
31-
return Crop
32-
case "fill":
33-
return Fill
34-
case "fit":
35-
return Crop | Fill
36-
case "order":
37-
return Order
38-
case "shape":
39-
return Cast | Fill | Order
40-
}
41-
return 0
42-
}
43-
44-
// NewShaper returns a shaper that will shape the result of expr
45-
// to the type returned by typeExpr according to tf.
46-
func NewShaper(sctx *super.Context, expr, typeExpr Evaluator, tf ShaperTransform) (Evaluator, error) {
47-
if l, ok := typeExpr.(*Literal); ok {
48-
typeVal := l.val
49-
switch id := typeVal.Type().ID(); {
50-
case id == super.IDType:
51-
typ, err := sctx.LookupByValue(typeVal.Bytes())
52-
if err != nil {
53-
return nil, err
54-
}
55-
return NewConstShaper(sctx, expr, typ, tf), nil
56-
case id == super.IDString && tf == Cast:
57-
name := super.DecodeString(typeVal.Bytes())
58-
if _, err := super.NewContext().LookupTypeNamed(name, super.TypeNull); err != nil {
59-
return nil, err
60-
}
61-
return &casterNamedType{sctx, expr, name}, nil
62-
}
63-
return nil, fmt.Errorf("shaper type argument is not a type: %s", sup.FormatValue(typeVal))
64-
}
65-
return &Shaper{
66-
sctx: sctx,
67-
expr: expr,
68-
typeExpr: typeExpr,
69-
transforms: tf,
70-
shapers: make(map[super.Type]*ConstShaper),
71-
}, nil
72-
}
73-
74-
type Shaper struct {
75-
sctx *super.Context
76-
expr Evaluator
77-
typeExpr Evaluator
78-
transforms ShaperTransform
79-
80-
shapers map[super.Type]*ConstShaper
81-
}
82-
83-
func (s *Shaper) Eval(this super.Value) super.Value {
84-
typeVal := s.typeExpr.Eval(this)
85-
switch id := typeVal.Type().ID(); {
86-
case id == super.IDType:
87-
typ, err := s.sctx.LookupByValue(typeVal.Bytes())
88-
if err != nil {
89-
return s.sctx.NewError(err)
90-
}
91-
shaper, ok := s.shapers[typ]
92-
if !ok {
93-
shaper = NewConstShaper(s.sctx, s.expr, typ, s.transforms)
94-
s.shapers[typ] = shaper
95-
}
96-
return shaper.Eval(this)
97-
case id == super.IDString && s.transforms == Cast:
98-
name := super.DecodeString(typeVal.Bytes())
99-
return (&casterNamedType{s.sctx, s.expr, name}).Eval(this)
100-
}
101-
return s.sctx.WrapError("shaper type argument is not a type", typeVal)
102-
}
103-
10428
type ConstShaper struct {
10529
sctx *super.Context
10630
expr Evaluator

runtime/ztests/expr/shape-crop-arrays-sets.yaml

Lines changed: 0 additions & 10 deletions
This file was deleted.

runtime/ztests/expr/shape-crop-named.yaml

Lines changed: 0 additions & 15 deletions
This file was deleted.

runtime/ztests/expr/shape-crop-null.yaml

Lines changed: 0 additions & 12 deletions
This file was deleted.

runtime/ztests/expr/shape-crop.yaml

Lines changed: 0 additions & 14 deletions
This file was deleted.

0 commit comments

Comments
 (0)