* 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
437 B
JavaScript
26 lines
437 B
JavaScript
"use strict";
|
|
let value = 1;
|
|
class Base {
|
|
set test(v) {
|
|
value = v;
|
|
}
|
|
}
|
|
|
|
class Obj extends Base {
|
|
set() {
|
|
return super.test = 3;
|
|
}
|
|
}
|
|
Object.defineProperty(Obj.prototype, 'test', {
|
|
value: 2,
|
|
writable: true,
|
|
configurable: true,
|
|
});
|
|
|
|
const obj = new Obj();
|
|
assert.equal(obj.set(), 3);
|
|
assert.equal(value, 3);
|
|
assert.equal(Base.prototype.test, undefined);
|
|
assert.equal(Obj.prototype.test, 2);
|
|
assert.equal(obj.test, 2);
|