mirror of
https://github.com/opentofu/opentofu.git
synced 2025-02-25 18:45:20 -06:00
Merge pull request #22756 from pselle/b-for_each-empty-list
Cover empty sets in for_each
This commit is contained in:
commit
de98de5624
@ -64,6 +64,12 @@ func evaluateResourceForEachExpressionKnown(expr hcl.Expression, ctx EvalContext
|
||||
return nil, true, diags
|
||||
}
|
||||
|
||||
// If the map is empty ({}), return an empty map, because cty will return nil when representing {} AsValueMap
|
||||
// This also covers an empty set (toset([]))
|
||||
if forEachVal.LengthInt() == 0 {
|
||||
return map[string]cty.Value{}, true, diags
|
||||
}
|
||||
|
||||
if forEachVal.Type().IsSetType() {
|
||||
if forEachVal.Type().ElementType() != cty.String {
|
||||
diags = diags.Append(&hcl.Diagnostic{
|
||||
@ -84,10 +90,5 @@ func evaluateResourceForEachExpressionKnown(expr hcl.Expression, ctx EvalContext
|
||||
}
|
||||
}
|
||||
|
||||
// If the map is empty ({}), return an empty map, because cty will return nil when representing {} AsValueMap
|
||||
if forEachVal.LengthInt() == 0 {
|
||||
return map[string]cty.Value{}, true, diags
|
||||
}
|
||||
|
||||
return forEachVal.AsValueMap(), true, nil
|
||||
}
|
||||
|
@ -338,6 +338,8 @@ var.foo
|
||||
const testPlanGraphBuilderForEachStr = `
|
||||
aws_instance.bar
|
||||
provider.aws
|
||||
aws_instance.bar2
|
||||
provider.aws
|
||||
aws_instance.bat
|
||||
aws_instance.boo
|
||||
provider.aws
|
||||
@ -349,6 +351,7 @@ aws_instance.foo
|
||||
provider.aws
|
||||
meta.count-boundary (EachMode fixup)
|
||||
aws_instance.bar
|
||||
aws_instance.bar2
|
||||
aws_instance.bat
|
||||
aws_instance.baz
|
||||
aws_instance.boo
|
||||
@ -357,6 +360,7 @@ meta.count-boundary (EachMode fixup)
|
||||
provider.aws
|
||||
provider.aws (close)
|
||||
aws_instance.bar
|
||||
aws_instance.bar2
|
||||
aws_instance.bat
|
||||
aws_instance.baz
|
||||
aws_instance.boo
|
||||
|
3
terraform/testdata/plan-for-each/main.tf
vendored
3
terraform/testdata/plan-for-each/main.tf
vendored
@ -10,6 +10,9 @@ resource "aws_instance" "foo" {
|
||||
|
||||
# sets
|
||||
resource "aws_instance" "bar" {
|
||||
for_each = toset([])
|
||||
}
|
||||
resource "aws_instance" "bar2" {
|
||||
for_each = toset(list("z", "y", "x"))
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user