reverts d6b39bc89b6022aecf69da500deb5b88a0266b85

This commit is contained in:
Sebastian McKenzie 2015-02-07 09:54:18 +11:00
parent 306cfc6328
commit 726451f86f
7 changed files with 73 additions and 21 deletions

View File

@ -37,7 +37,12 @@ ReplaceSupers.prototype.setSuperProperty = function (property, value, isStatic,
return t.callExpression(
this.file.addHelper("set"),
[
isStatic ? this.superName : t.memberExpression(this.superName, t.identifier("prototype")),
t.callExpression(
t.memberExpression(t.identifier("Object"), t.identifier("getPrototypeOf")),
[
isStatic ? this.className : t.memberExpression(this.className, t.identifier("prototype"))
]
),
isComputed ? property : t.literal(property.name),
value,
thisExpression
@ -63,7 +68,12 @@ ReplaceSupers.prototype.getSuperProperty = function (property, isStatic, isCompu
return t.callExpression(
this.file.addHelper("get"),
[
isStatic ? this.superName : t.memberExpression(this.superName, t.identifier("prototype")),
t.callExpression(
t.memberExpression(t.identifier("Object"), t.identifier("getPrototypeOf")),
[
isStatic ? this.className : t.memberExpression(this.className, t.identifier("prototype"))
]
),
isComputed ? property : t.literal(property.name),
thisExpression
]

View File

@ -0,0 +1,21 @@
var log = '';
class Base {
p() { log += '[Base]'; }
}
class OtherBase {
p() { log += '[OtherBase]'; }
}
class Derived extends Base {
p() {
log += '[Derived]';
super.p();
Derived.prototype.__proto__ = OtherBase.prototype;
super.p();
}
}
new Derived().p();
assert.equal(log, '[Derived][Base][OtherBase]');

View File

@ -15,14 +15,14 @@ var Test = (function (Foo) {
_classCallCheck(this, Test);
woops["super"].test();
_get(Foo.prototype, "constructor", this).call(this);
_get(Foo.prototype, "test", this).call(this);
_get(Object.getPrototypeOf(Test.prototype), "constructor", this).call(this);
_get(Object.getPrototypeOf(Test.prototype), "test", this).call(this);
_get(Foo.prototype, "constructor", this).apply(this, arguments);
(_get2 = _get(Foo.prototype, "constructor", this)).call.apply(_get2, [this, "test"].concat(_slice.call(arguments)));
_get(Object.getPrototypeOf(Test.prototype), "constructor", this).apply(this, arguments);
(_get2 = _get(Object.getPrototypeOf(Test.prototype), "constructor", this)).call.apply(_get2, [this, "test"].concat(_slice.call(arguments)));
_get(Foo.prototype, "test", this).apply(this, arguments);
(_get3 = _get(Foo.prototype, "test", this)).call.apply(_get3, [this, "test"].concat(_slice.call(arguments)));
_get(Object.getPrototypeOf(Test.prototype), "test", this).apply(this, arguments);
(_get3 = _get(Object.getPrototypeOf(Test.prototype), "test", this)).call.apply(_get3, [this, "test"].concat(_slice.call(arguments)));
}
_inherits(Test, Foo);
@ -31,9 +31,9 @@ var Test = (function (Foo) {
foo: {
value: function foo() {
var _get2;
_get(Foo, "foo", this).call(this);
_get(Foo, "foo", this).apply(this, arguments);
(_get2 = _get(Foo, "foo", this)).call.apply(_get2, [this, "test"].concat(_slice.call(arguments)));
_get(Object.getPrototypeOf(Test), "foo", this).call(this);
_get(Object.getPrototypeOf(Test), "foo", this).apply(this, arguments);
(_get2 = _get(Object.getPrototypeOf(Test), "foo", this)).call.apply(_get2, [this, "test"].concat(_slice.call(arguments)));
},
writable: true,
configurable: true
@ -42,9 +42,9 @@ var Test = (function (Foo) {
test: {
value: function test() {
var _get2;
_get(Foo.prototype, "test", this).call(this);
_get(Foo.prototype, "test", this).apply(this, arguments);
(_get2 = _get(Foo.prototype, "test", this)).call.apply(_get2, [this, "test"].concat(_slice.call(arguments)));
_get(Object.getPrototypeOf(Test.prototype), "test", this).call(this);
_get(Object.getPrototypeOf(Test.prototype), "test", this).apply(this, arguments);
(_get2 = _get(Object.getPrototypeOf(Test.prototype), "test", this)).call.apply(_get2, [this, "test"].concat(_slice.call(arguments)));
},
writable: true,
configurable: true

View File

@ -10,8 +10,8 @@ var Test = (function (Foo) {
function Test() {
_classCallCheck(this, Test);
_get(Foo.prototype, "test", this);
_get(Foo.prototype, "test", this).whatever;
_get(Object.getPrototypeOf(Test.prototype), "test", this);
_get(Object.getPrototypeOf(Test.prototype), "test", this).whatever;
}
_inherits(Test, Foo);

View File

@ -12,8 +12,8 @@ var Test = (function (Foo) {
function Test() {
_classCallCheck(this, Test);
_get(Foo.prototype, "test", this).whatever();
_get(Foo.prototype, "test", this).call(this);
_get(Object.getPrototypeOf(Test.prototype), "test", this).whatever();
_get(Object.getPrototypeOf(Test.prototype), "test", this).call(this);
}
_inherits(Test, Foo);
@ -21,7 +21,7 @@ var Test = (function (Foo) {
_prototypeProperties(Test, {
test: {
value: function test() {
return _get(Foo, "wow", this).call(this);
return _get(Object.getPrototypeOf(Test), "wow", this).call(this);
},
writable: true,
configurable: true

View File

@ -0,0 +1,21 @@
var log = '';
class Base {
p() { log += '[Base]'; }
}
class OtherBase {
p() { log += '[OtherBase]'; }
}
class Derived extends Base {
p() {
log += '[Derived]';
super.p();
Derived.prototype.__proto__ = OtherBase.prototype;
super.p();
}
}
new Derived().p();
assert.equal(log, '[Derived][Base][OtherBase]');

View File

@ -7,5 +7,5 @@ var _classCallCheck = function (instance, Constructor) { if (!(instance instance
var Test = function Test() {
_classCallCheck(this, Test);
_get(Function.prototype, "hasOwnProperty", this).call(this, "test");
};
_get(Object.getPrototypeOf(Test.prototype), "hasOwnProperty", this).call(this, "test");
};