* Improve get/set helper
* fixtures
* Edge cases
* Add loose edge cases
* Spec compliant
* Add issue case
* Even more edge cases!
* Final updates
* Fix name
* Use Reflect.{get, set} when available
* Avoid block scoping in loose
* Remove semicolon
* Do not redefine a non-enumerable
* Get strictness from call site, not helpers
* Add called assertions
* Classes are always strict
* Update test fixture
26 lines
504 B
JavaScript
26 lines
504 B
JavaScript
"use strict";
|
|
const Base = {
|
|
};
|
|
|
|
const obj = {
|
|
set() {
|
|
return super.test = 3;
|
|
},
|
|
};
|
|
Object.defineProperty(obj, 'test', {
|
|
value: 2,
|
|
writable: true,
|
|
configurable: true,
|
|
enumerable: false,
|
|
});
|
|
Object.setPrototypeOf(obj, Base);
|
|
|
|
assert.equal(obj.set(), 3);
|
|
assert.equal(Base.test, undefined);
|
|
assert.equal(obj.test, 3);
|
|
|
|
const desc = Object.getOwnPropertyDescriptor(obj, 'test');
|
|
assert.equal(desc.configurable, true);
|
|
assert.equal(desc.writable, true);
|
|
assert.equal(desc.enumerable, false);
|