From bb39fafbe563307a2b209ee2b2bb8c742d1625ad Mon Sep 17 00:00:00 2001 From: OwenTuz Date: Mon, 5 Oct 2020 13:48:49 +0100 Subject: [PATCH] lang/funcs: lookup() will only treat map as unknown if it is wholly unknown (#26427) Fix for issue #26320 - this allows us to derive known values from partially known maps where we can, and may prevent unnecessary destroy/rebuild cycles during apply in some cases. --- lang/funcs/collection.go | 2 +- lang/funcs/collection_test.go | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/lang/funcs/collection.go b/lang/funcs/collection.go index 5fff2b903..d83a79bd3 100644 --- a/lang/funcs/collection.go +++ b/lang/funcs/collection.go @@ -315,7 +315,7 @@ var LookupFunc = function.New(&function.Spec{ mapVar := args[0] lookupKey := args[1].AsString() - if !mapVar.IsWhollyKnown() { + if !mapVar.IsKnown() { return cty.UnknownVal(retType), nil } diff --git a/lang/funcs/collection_test.go b/lang/funcs/collection_test.go index db42a997a..d98555196 100644 --- a/lang/funcs/collection_test.go +++ b/lang/funcs/collection_test.go @@ -720,6 +720,14 @@ func TestLookup(t *testing.T) { cty.UnknownVal(cty.String), false, }, + { + []cty.Value{ + mapWithUnknowns, + cty.StringVal("foo"), + }, + cty.StringVal("bar"), + false, + }, { []cty.Value{ simpleMap,