diff options
author | Matt A. Tobin <mattatobin@localhost.localdomain> | 2018-02-02 04:16:08 -0500 |
---|---|---|
committer | Matt A. Tobin <mattatobin@localhost.localdomain> | 2018-02-02 04:16:08 -0500 |
commit | 5f8de423f190bbb79a62f804151bc24824fa32d8 (patch) | |
tree | 10027f336435511475e392454359edea8e25895d /js/src/tests/ecma_6/Class/superPropSkips.js | |
parent | 49ee0794b5d912db1f95dce6eb52d781dc210db5 (diff) | |
download | UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.gz UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.lz UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.xz UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.zip |
Add m-esr52 at 52.6.0
Diffstat (limited to 'js/src/tests/ecma_6/Class/superPropSkips.js')
-rw-r--r-- | js/src/tests/ecma_6/Class/superPropSkips.js | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/js/src/tests/ecma_6/Class/superPropSkips.js b/js/src/tests/ecma_6/Class/superPropSkips.js new file mode 100644 index 000000000..c9587c72f --- /dev/null +++ b/js/src/tests/ecma_6/Class/superPropSkips.js @@ -0,0 +1,45 @@ +// Ensure that super lookups and sets skip over properties on the |this| object. +// That is, super lookups start with the superclass, not the current class. + +// The whole point: an empty superclass +class base { + constructor() { } +} + +class derived extends base { + constructor() { super(); this.prop = "flamingo"; } + + toString() { throw "No!"; } + + testSkipGet() { + assertEq(super.prop, undefined); + } + + testSkipDerivedOverrides() { + assertEq(super["toString"](), Object.prototype.toString.call(this)); + } + + testSkipSet() { + // since there's no prop on the chain, we should set the data property + // on the receiver, |this| + super.prop = "rat"; + assertEq(this.prop, "rat"); + + // Since the receiver is the instance, we can overwrite inherited + // properties of the instance, even non-writable ones, as they could be + // skipped in the super lookup. + assertEq(this.nonWritableProp, "pony"); + super.nonWritableProp = "bear"; + assertEq(this.nonWritableProp, "bear"); + } +} + +Object.defineProperty(derived.prototype, "nonWritableProp", { writable: false, value: "pony" }); + +let instance = new derived(); +instance.testSkipGet(); +instance.testSkipDerivedOverrides(); +instance.testSkipSet(); + +if (typeof reportCompare === 'function') + reportCompare(0,0,"OK"); |