diff --git a/dagger/compiler.go b/dagger/compiler.go index 711ee8b6..ba84590f 100644 --- a/dagger/compiler.go +++ b/dagger/compiler.go @@ -48,6 +48,9 @@ func (cc *Compiler) EmptyStruct() (*Value, error) { } func (cc *Compiler) Compile(name string, src interface{}) (*Value, error) { + cc.Lock() + defer cc.Unlock() + inst, err := cc.Cue().Compile(name, src) if err != nil { // FIXME: cleaner way to unwrap cue error details? diff --git a/dagger/value.go b/dagger/value.go index d2823650..cf4056f5 100644 --- a/dagger/value.go +++ b/dagger/value.go @@ -255,6 +255,9 @@ func (v *Value) Validate(defs ...string) error { // Return cue source for this value func (v *Value) Source() ([]byte, error) { + v.cc.RLock() + defer v.cc.RUnlock() + return cueformat.Node(v.val.Eval().Syntax()) }