diff --git a/helper/schema/field_writer_map.go b/helper/schema/field_writer_map.go index 08ee11c37..c09358b1b 100644 --- a/helper/schema/field_writer_map.go +++ b/helper/schema/field_writer_map.go @@ -341,6 +341,11 @@ func (w *MapFieldWriter) setSet( // problems when the old data isn't wiped first. w.clearTree(addr) + if value.(*Set) == nil { + w.result[k+".#"] = "0" + return nil + } + for code, elem := range value.(*Set).m { if err := w.set(append(addrCopy, code), elem); err != nil { return err diff --git a/helper/schema/field_writer_map_test.go b/helper/schema/field_writer_map_test.go index 42ed9c208..d1a7932aa 100644 --- a/helper/schema/field_writer_map_test.go +++ b/helper/schema/field_writer_map_test.go @@ -203,6 +203,15 @@ func TestMapFieldWriter(t *testing.T) { }, }, + "set typed nil": { + []string{"set"}, + func() *Set { return nil }(), + false, + map[string]string{ + "set.#": "0", + }, + }, + "set resource": { []string{"setDeep"}, []interface{}{