diff --git a/config/hcl2shim/values.go b/config/hcl2shim/values.go index b5868f6edc..2c5b2907e6 100644 --- a/config/hcl2shim/values.go +++ b/config/hcl2shim/values.go @@ -167,10 +167,7 @@ func ConfigValueFromHCL2(v cty.Value) interface{} { it := v.ElementIterator() for it.Next() { _, ev := it.Element() - cv := ConfigValueFromHCL2(ev) - if cv != nil { - l = append(l, cv) - } + l = append(l, ConfigValueFromHCL2(ev)) } return l } diff --git a/config/hcl2shim/values_test.go b/config/hcl2shim/values_test.go index ac70c339e4..7c3011da05 100644 --- a/config/hcl2shim/values_test.go +++ b/config/hcl2shim/values_test.go @@ -232,26 +232,6 @@ func TestConfigValueFromHCL2Block(t *testing.T) { &configschema.Block{}, nil, }, - // nulls should be filtered out of the config, since they couldn't exist - // in hcl. - { - cty.ObjectVal(map[string]cty.Value{ - "list": cty.ListVal([]cty.Value{ - cty.StringVal("ok"), - cty.NullVal(cty.String)}), - }), - &configschema.Block{ - Attributes: map[string]*configschema.Attribute{ - "list": { - Type: cty.List(cty.String), - Optional: true, - }, - }, - }, - map[string]interface{}{ - "list": []interface{}{"ok"}, - }, - }, } for _, test := range tests { diff --git a/helper/plugin/grpc_provider.go b/helper/plugin/grpc_provider.go index fac4a63fec..f7ace8b5a3 100644 --- a/helper/plugin/grpc_provider.go +++ b/helper/plugin/grpc_provider.go @@ -1342,7 +1342,8 @@ func validateConfigNulls(v cty.Value, path cty.Path) []*proto.Diagnostic { if ev.IsNull() { diags = append(diags, &proto.Diagnostic{ Severity: proto.Diagnostic_ERROR, - Summary: "null value found in list", + Summary: "Null value found in list", + Detail: "Null values are not allowed for this attribute value.", Attribute: convert.PathToAttributePath(append(path, cty.IndexStep{Key: kv})), }) continue