Justin Ridgewell 890a45216f
Update super property get/set/call in loose mode (#7774)
* Update super property get/set/call in loose mode

Follows the plan laid out in https://github.com/babel/babel/pull/7553#issuecomment-381434519.

With #7691, this closes #7553, closes #4312.

* Post #7772

* Memoized property
2018-04-22 13:49:19 -04:00

42 lines
595 B
JavaScript

"use strict";
class Base {}
Object.defineProperty(Base.prototype, 0, {
value: 0,
writable: true,
configurable: true,
});
Object.defineProperty(Base.prototype, 1, {
value: 1,
writable: true,
configurable: true,
});
let i = 0;
const proper = {
get prop() {
return i++;
},
};
class Obj extends Base {
assign() {
super[proper.prop] += 1;
}
assign2() {
super[i] += 1;
}
}
const obj = new Obj();
obj.assign();
expect(i).toBe(1);
expect(obj[0]).toBe(1);
expect(obj[1]).toBe(1);
obj.assign2();
expect(i).toBe(1);
expect(obj[0]).toBe(1);
expect(obj[1]).toBe(2);