- // An explicit set overrides the lazy descriptor with a default data property.
- set: function (value) {
- Object.defineProperty(obj, name, descriptorFromDefault(defaultDataDescriptor, {
- value,
- }))
- },
+ /**
+ * Unless a non-writable descriptor was specified, an explicit set will overwrite
+ * the lazy descriptor with a default data property,
+ */
+ ...(finalDescriptor.writable && {
+ set: function (value) {
+ Object.defineProperty(this, name, createAssign(defaultDataDescriptor, {
+ value,
+ }))
+ },
+ }),