in tools/diff-processor/diff/diff.go [224:246]
func elemChanged(oldField, newField *schema.Schema) bool {
// Check if Elem changed (unless old and new both represent nested fields)
if (oldField.Elem == nil && newField.Elem != nil) || (oldField.Elem != nil && newField.Elem == nil) {
return true
}
if oldField.Elem != nil && newField.Elem != nil {
// At this point new/old Elems are either schema.Schema or schema.Resource.
// If both are schema.Resource we don't need to do anything. Diffs on subfields
// are handled separately.
_, oldIsResource := oldField.Elem.(*schema.Resource)
_, newIsResource := newField.Elem.(*schema.Resource)
if (oldIsResource && !newIsResource) || (!oldIsResource && newIsResource) {
return true
}
if !oldIsResource && !newIsResource {
if _, _, changed := diffFields(oldField.Elem.(*schema.Schema), newField.Elem.(*schema.Schema), ""); changed {
return true
}
}
}
return false
}