Index: test/mjsunit/harmony/super.js |
diff --git a/test/mjsunit/harmony/super.js b/test/mjsunit/harmony/super.js |
index 35f6469442598bcce046af1a5d3e9c0d22349a12..8257688fbb80d9ff2df08fbd0fc1870689127639 100644 |
--- a/test/mjsunit/harmony/super.js |
+++ b/test/mjsunit/harmony/super.js |
@@ -37,6 +37,41 @@ |
}()); |
+(function TestSuperKeyedLoads() { |
+ var x = 'x'; |
+ var derivedDataProperty = 'derivedDataProperty'; |
+ var f = 'f'; |
+ function Base() { } |
+ function Derived() { |
+ this[derivedDataProperty] = "xxx"; |
arv (Not doing code reviews)
2014/10/01 15:20:23
consistency
|
+ } |
+ Derived.prototype = Object.create(Base.prototype); |
+ |
+ function fBase() { return "Base " + this.toString(); } |
+ |
+ Base.prototype[f] = fBase.toMethod(Base.prototype); |
+ |
+ function fDerived() { |
+ assertEquals("Base this is Derived", super[f]()); |
+ var a = super[x]; |
+ assertEquals(15, a); |
+ assertEquals(15, super[x]); |
+ assertEquals(27, this[x]); |
+ |
+ return "Derived" |
+ } |
+ |
+ Base.prototype[x] = 15; |
+ Base.prototype.toString = function() { return "this is Base"; }; |
+ Derived.prototype.toString = function() { return "this is Derived"; }; |
+ Derived.prototype[x] = 27; |
+ Derived.prototype[f] = fDerived.toMethod(Derived.prototype); |
+ |
+ assertEquals("Base this is Base", new Base().f()); |
+ assertEquals("Derived", new Derived().f()); |
+}()); |
+ |
+ |
arv (Not doing code reviews)
2014/10/01 15:20:23
Can you add tests that uses numeric keys?
Can you
|
(function TestSuperKeywordNonMethod() { |
function f() { |
super.unknown(); |
@@ -79,6 +114,40 @@ |
}()); |
+(function TestGetterKeyed() { |
+ var x = 'x'; |
+ function Base() {} |
+ var derived; |
+ Base.prototype = { |
+ constructor: Base, |
+ get x() { |
+ assertSame(this, derived); |
+ return this._x; |
+ }, |
+ _x: 'base' |
+ }; |
+ |
+ function Derived() {} |
+ Derived.__proto__ = Base; |
+ Derived.prototype = { |
+ __proto__: Base.prototype, |
+ constructor: Derived, |
+ _x: 'derived' |
+ }; |
+ Derived.prototype.testGetter = function() { |
+ return super[x]; |
+ }.toMethod(Derived.prototype); |
+ Derived.prototype.testGetterStrict = function() { |
+ 'use strict'; |
+ return super[x]; |
+ }.toMethod(Derived.prototype); |
+ derived = new Derived(); |
+ assertEquals('derived', derived.testGetter()); |
+ derived = new Derived(); |
+ assertEquals('derived', derived.testGetterStrict()); |
+}()); |
+ |
+ |
(function TestSetter() { |
function Base() {} |
Base.prototype = { |