From 8b0eea6e7fa1e0402c38cdb40728159df1aa9339 Mon Sep 17 00:00:00 2001 From: Andrea Luzzardi Date: Thu, 8 Apr 2021 17:22:25 -0700 Subject: [PATCH] compiler: simplify InstanceMerge Signed-off-by: Andrea Luzzardi --- dagger/compiler/compiler.go | 22 ++++++++-------------- 1 file changed, 8 insertions(+), 14 deletions(-) diff --git a/dagger/compiler/compiler.go b/dagger/compiler/compiler.go index eb4eaec1..f750136c 100644 --- a/dagger/compiler/compiler.go +++ b/dagger/compiler/compiler.go @@ -29,7 +29,7 @@ func Wrap(v cue.Value, inst *cue.Instance) *Value { return DefaultCompiler.Wrap(v, inst) } -func InstanceMerge(src ...interface{}) (*Value, error) { +func InstanceMerge(src ...*Value) (*Value, error) { return DefaultCompiler.InstanceMerge(src...) } @@ -102,7 +102,7 @@ func (c *Compiler) Compile(name string, src interface{}) (*Value, error) { // FIXME: AVOID THIS AT ALL COST // Special case: we must return an instance with the same // contents as v, for the purposes of cueflow. -func (c *Compiler) InstanceMerge(src ...interface{}) (*Value, error) { +func (c *Compiler) InstanceMerge(src ...*Value) (*Value, error) { var ( v = c.NewValue() inst = v.CueInst() @@ -113,18 +113,12 @@ func (c *Compiler) InstanceMerge(src ...interface{}) (*Value, error) { defer c.unlock() for _, s := range src { - // If calling Fill() with a Value, we want to use the underlying - // cue.Value to fill. - if val, ok := s.(*Value); ok { - inst, err = inst.Fill(val.val) - if err != nil { - return nil, fmt.Errorf("merge failed: %w", err) - } - } else { - inst, err = inst.Fill(s) - if err != nil { - return nil, fmt.Errorf("merge failed: %w", err) - } + inst, err = inst.Fill(s.val) + if err != nil { + return nil, fmt.Errorf("merge failed: %w", err) + } + if err := inst.Value().Err(); err != nil { + return nil, err } }