diff --git a/x/model/name.go b/x/model/name.go index 0319c7ea6..1a4fa4d42 100644 --- a/x/model/name.go +++ b/x/model/name.go @@ -320,6 +320,10 @@ func (r Name) MarshalText() ([]byte, error) { // It is an error to call UnmarshalText on a valid Name. func (r *Name) UnmarshalText(text []byte) error { if r.Valid() { + // The invariant of UnmarshalText is that it should only be + // called on an invalid/zero Name. If we allow UnmarshalText + // on a valid Name, then the Name will be mutated, breaking + // the immutability of the Name. return errors.New("model.Name: UnmarshalText on valid Name") } // unsafeString is safe here because the contract of UnmarshalText