From 21df9970618fcf9829a55c335bf3ee7d2dc7eae5 Mon Sep 17 00:00:00 2001 From: Megan Marsh Date: Tue, 26 Jan 2021 09:25:21 -0800 Subject: [PATCH] Handle case where list is empty Co-authored-by: Sylvia Moss --- hcl2template/utils.go | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/hcl2template/utils.go b/hcl2template/utils.go index f27d10497..43f1e2aab 100644 --- a/hcl2template/utils.go +++ b/hcl2template/utils.go @@ -145,25 +145,42 @@ func ConvertPluginConfigValueToHCLValue(v interface{}) (cty.Value, error) { for i, ev := range v { 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: vals := make([]cty.Value, len(v)) for i, ev := range v { 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: vals := make([]cty.Value, len(v)) for i, ev := range v { vals[i] = cty.NumberIntVal(ev) } + if len(vals) == 0 { + buildValue = cty.ListValEmpty(cty.Number) + } else { + buildValue = cty.ListVal(vals) + } buildValue = cty.ListVal(vals) case []uint64: vals := make([]cty.Value, len(v)) for i, ev := range v { vals[i] = cty.NumberUIntVal(ev) } - buildValue = cty.ListVal(vals) + if len(vals) == 0 { + buildValue = cty.ListValEmpty(cty.Number) + } else { + buildValue = cty.ListVal(vals) + } default: return cty.Value{}, fmt.Errorf("unhandled buildvar type: %T", v) }