Handle case where list is empty

Co-authored-by: Sylvia Moss <moss@hashicorp.com>
This commit is contained in:
Megan Marsh 2021-01-26 09:25:21 -08:00
parent e3b14d888b
commit 21df997061
1 changed files with 20 additions and 3 deletions

View File

@ -145,25 +145,42 @@ func ConvertPluginConfigValueToHCLValue(v interface{}) (cty.Value, error) {
for i, ev := range v { for i, ev := range v {
vals[i] = cty.StringVal(ev) vals[i] = cty.StringVal(ev)
} }
buildValue = cty.ListVal(vals) if len(vals) == 0 {
buildValue = cty.ListValEmpty(cty.String)
} else {
buildValue = cty.ListVal(vals)
}
case []uint8: case []uint8:
vals := make([]cty.Value, len(v)) vals := make([]cty.Value, len(v))
for i, ev := range v { for i, ev := range v {
vals[i] = cty.NumberUIntVal(uint64(ev)) vals[i] = cty.NumberUIntVal(uint64(ev))
} }
buildValue = cty.ListVal(vals) if len(vals) == 0 {
buildValue = cty.ListValEmpty(cty.Number)
} else {
buildValue = cty.ListVal(vals)
}
case []int64: case []int64:
vals := make([]cty.Value, len(v)) vals := make([]cty.Value, len(v))
for i, ev := range v { for i, ev := range v {
vals[i] = cty.NumberIntVal(ev) vals[i] = cty.NumberIntVal(ev)
} }
if len(vals) == 0 {
buildValue = cty.ListValEmpty(cty.Number)
} else {
buildValue = cty.ListVal(vals)
}
buildValue = cty.ListVal(vals) buildValue = cty.ListVal(vals)
case []uint64: case []uint64:
vals := make([]cty.Value, len(v)) vals := make([]cty.Value, len(v))
for i, ev := range v { for i, ev := range v {
vals[i] = cty.NumberUIntVal(ev) vals[i] = cty.NumberUIntVal(ev)
} }
buildValue = cty.ListVal(vals) if len(vals) == 0 {
buildValue = cty.ListValEmpty(cty.Number)
} else {
buildValue = cty.ListVal(vals)
}
default: default:
return cty.Value{}, fmt.Errorf("unhandled buildvar type: %T", v) return cty.Value{}, fmt.Errorf("unhandled buildvar type: %T", v)
} }