@@ -88,7 +88,7 @@ func StructToSchema(v any, customize func(map[string]*schema.Schema) map[string]
8888// fields for which the platform returns a value, but the user has not configured any value.
8989// For example: the REST API returns `{"tags": {}}` for a resource with no tags.
9090func SetSuppressDiff (v * schema.Schema ) {
91- v .DiffSuppressFunc = diffSuppressor (fmt . Sprintf ( "%v" , v . Type . Zero ()) )
91+ v .DiffSuppressFunc = diffSuppressor (v )
9292}
9393
9494// SetDefault sets the default value for a schema.
@@ -170,7 +170,7 @@ func handleSuppressDiff(typeField reflect.StructField, v *schema.Schema) {
170170 tfTags := strings .Split (typeField .Tag .Get ("tf" ), "," )
171171 for _ , tag := range tfTags {
172172 if tag == "suppress_diff" {
173- v .DiffSuppressFunc = diffSuppressor (fmt . Sprintf ( "%v" , v . Type . Zero ()) )
173+ v .DiffSuppressFunc = diffSuppressor (v )
174174 break
175175 }
176176 }
@@ -200,7 +200,8 @@ func chooseFieldName(typeField reflect.StructField) string {
200200 return strings .Split (jsonTag , "," )[0 ]
201201}
202202
203- func diffSuppressor (zero string ) func (k , old , new string , d * schema.ResourceData ) bool {
203+ func diffSuppressor (v * schema.Schema ) func (k , old , new string , d * schema.ResourceData ) bool {
204+ zero := fmt .Sprintf ("%v" , v .Type .Zero ())
204205 return func (k , old , new string , d * schema.ResourceData ) bool {
205206 if new == zero && old != zero {
206207 log .Printf ("[DEBUG] Suppressing diff for %v: platform=%#v config=%#v" , k , old , new )
@@ -319,11 +320,10 @@ func typeToSchema(v reflect.Value, path []string) map[string]*schema.Schema {
319320 sv := reflect .New (elem ).Elem ()
320321 nestedSchema := typeToSchema (sv , append (path , fieldName , "0" ))
321322 if strings .Contains (tfTag , "suppress_diff" ) {
322- blockCount := strings .Join (append (path , fieldName , "#" ), "." )
323- scm [fieldName ].DiffSuppressFunc = makeEmptyBlockSuppressFunc (blockCount )
323+ scm [fieldName ].DiffSuppressFunc = diffSuppressor (scm [fieldName ])
324324 for _ , v := range nestedSchema {
325325 // to those relatively new to GoLang: we must explicitly pass down v by copy
326- v .DiffSuppressFunc = diffSuppressor (fmt . Sprintf ( "%v" , v . Type . Zero ()) )
326+ v .DiffSuppressFunc = diffSuppressor (v )
327327 }
328328 }
329329 scm [fieldName ].Elem = & schema.Resource {
@@ -338,11 +338,10 @@ func typeToSchema(v reflect.Value, path []string) map[string]*schema.Schema {
338338
339339 nestedSchema := typeToSchema (sv , append (path , fieldName , "0" ))
340340 if strings .Contains (tfTag , "suppress_diff" ) {
341- blockCount := strings .Join (append (path , fieldName , "#" ), "." )
342- scm [fieldName ].DiffSuppressFunc = makeEmptyBlockSuppressFunc (blockCount )
341+ scm [fieldName ].DiffSuppressFunc = diffSuppressor (scm [fieldName ])
343342 for _ , v := range nestedSchema {
344343 // to those relatively new to GoLang: we must explicitly pass down v by copy
345- v .DiffSuppressFunc = diffSuppressor (fmt . Sprintf ( "%v" , v . Type . Zero ()) )
344+ v .DiffSuppressFunc = diffSuppressor (v )
346345 }
347346 }
348347 scm [fieldName ].Elem = & schema.Resource {
0 commit comments