don't attempt to decode empty changes values

An empty DynamicValue can't be decoded but indicates no state, so just
return a NullVal.
This commit is contained in:
James Bardin 2018-12-20 13:06:53 -05:00
parent a915f3f13e
commit 1b8617cef0
1 changed files with 14 additions and 6 deletions

View File

@ -166,13 +166,21 @@ type ChangeSrc struct {
// to call the corresponding Decode method of that struct rather than working // to call the corresponding Decode method of that struct rather than working
// directly with its embedded Change. // directly with its embedded Change.
func (cs *ChangeSrc) Decode(ty cty.Type) (*Change, error) { func (cs *ChangeSrc) Decode(ty cty.Type) (*Change, error) {
before, err := cs.Before.Decode(ty) var err error
if err != nil { before := cty.NullVal(ty)
return nil, fmt.Errorf("error decoding 'before' value: %s", err) after := cty.NullVal(ty)
if len(cs.Before) > 0 {
before, err = cs.Before.Decode(ty)
if err != nil {
return nil, fmt.Errorf("error decoding 'before' value: %s", err)
}
} }
after, err := cs.After.Decode(ty) if len(cs.After) > 0 {
if err != nil { after, err = cs.After.Decode(ty)
return nil, fmt.Errorf("error decoding 'after' value: %s", err) if err != nil {
return nil, fmt.Errorf("error decoding 'after' value: %s", err)
}
} }
return &Change{ return &Change{
Action: cs.Action, Action: cs.Action,