Ensure that FieldDetails are immutable to backends
@pwithnall
Submitted by Philip Withnall Link to original bug (#653233)
Description
As discussed with Alex on IRC, we should ensure (and document) that backends can't modify FieldDetails instances. Instead, they should replace instances of FieldDetails they want to change with new instances, which have been deep copied and modified as appropriate.
This means that clients can safely modify FieldDetails instances that they're handed, and re-use them when updating properties without having to worry about breaking the internal state of a backend.
Version: git master