* 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
28 lines
515 B
JavaScript
28 lines
515 B
JavaScript
"use strict";
|
|
const Base = {
|
|
};
|
|
|
|
const obj = {
|
|
set() {
|
|
return super.test = 3;
|
|
},
|
|
};
|
|
Object.defineProperty(obj, 'test', {
|
|
value: 2,
|
|
writable: false,
|
|
configurable: true,
|
|
enumerable: true,
|
|
});
|
|
Object.setPrototypeOf(obj, Base);
|
|
|
|
assert.throws(() => {
|
|
obj.set();
|
|
});
|
|
assert.equal(Base.test, undefined);
|
|
assert.equal(obj.test, 2);
|
|
|
|
const desc = Object.getOwnPropertyDescriptor(obj, 'test');
|
|
assert.equal(desc.configurable, true);
|
|
assert.equal(desc.writable, false);
|
|
assert.equal(desc.enumerable, true);
|