From 60d22c45f05af26fa07d5ce8484e08b435e6203b Mon Sep 17 00:00:00 2001 From: Parviz ROzikov Date: Sat, 9 Nov 2019 00:16:53 +0700 Subject: [PATCH] transpose function - return empty list when value is empty #23299 --- lang/funcs/collection.go | 5 ++++- lang/funcs/collection_test.go | 4 ++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/lang/funcs/collection.go b/lang/funcs/collection.go index 50b52b3cf3d8..2ea4168757b3 100644 --- a/lang/funcs/collection.go +++ b/lang/funcs/collection.go @@ -1179,7 +1179,6 @@ func sliceIndexes(args []cty.Value) (int, int, bool, error) { return startIndex, endIndex, startKnown && endKnown, nil } -// TransposeFunc contructs a function that takes a map of lists of strings and // TransposeFunc constructs a function that takes a map of lists of strings and // swaps the keys and values to produce a new map of lists of strings. var TransposeFunc = function.New(&function.Spec{ @@ -1226,6 +1225,10 @@ var TransposeFunc = function.New(&function.Spec{ outputMap[outKey] = cty.ListVal(values) } + if len(outputMap) == 0 { + return cty.MapValEmpty(cty.List(cty.String)), nil + } + return cty.MapVal(outputMap), nil }, }) diff --git a/lang/funcs/collection_test.go b/lang/funcs/collection_test.go index cec18c04962f..58fa4beffc0f 100644 --- a/lang/funcs/collection_test.go +++ b/lang/funcs/collection_test.go @@ -2903,8 +2903,8 @@ func TestTranspose(t *testing.T) { cty.MapVal(map[string]cty.Value{ "key1": cty.ListValEmpty(cty.String), }), - cty.NilVal, - true, + cty.MapValEmpty(cty.List(cty.String)), + false, }, { // bad map - value not a list cty.MapVal(map[string]cty.Value{