| OLD | NEW |
| 1 // Copyright 2014 the V8 project authors. All rights reserved. | 1 // Copyright 2014 the V8 project authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 // Flags: --harmony-arrow-functions --allow-natives-syntax | 5 // Flags: --harmony-arrow-functions --allow-natives-syntax |
| 6 // Flags: --harmony-spreadcalls --harmony-destructuring | 6 // Flags: --harmony-spreadcalls --harmony-destructuring |
| 7 // Flags: --harmony-rest-parameters --harmony-sloppy | 7 // Flags: --harmony-rest-parameters --harmony-sloppy |
| 8 | 8 |
| 9 (function TestSuperNamedLoads() { | 9 (function TestSuperNamedLoads() { |
| 10 function Base() { } | 10 function Base() { } |
| (...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 74 assertEquals(27, this[x]); | 74 assertEquals(27, this[x]); |
| 75 return "Derived"; | 75 return "Derived"; |
| 76 } | 76 } |
| 77 }; | 77 }; |
| 78 | 78 |
| 79 assertEquals("Base this is Base", new Base().f()); | 79 assertEquals("Base this is Base", new Base().f()); |
| 80 assertEquals("Derived", new Derived().f()); | 80 assertEquals("Derived", new Derived().f()); |
| 81 }()); | 81 }()); |
| 82 | 82 |
| 83 | 83 |
| 84 (function TestSuperNumericKeyedLoads() { | |
| 85 var x = 1; | |
| 86 var derivedDataProperty = 2; | |
| 87 var f = 3; | |
| 88 | |
| 89 function Base() { } | |
| 90 function fBase() { return "Base " + this.toString(); } | |
| 91 Base.prototype[f] = %ToMethod(fBase, Base.prototype); | |
| 92 Base.prototype[x] = 15; | |
| 93 Base.prototype.toString = function() { return "this is Base"; }; | |
| 94 | |
| 95 function Derived() { | |
| 96 this[derivedDataProperty] = "xxx"; | |
| 97 } | |
| 98 Derived.prototype = { | |
| 99 __proto__: Base.prototype, | |
| 100 toString() { return "this is Derived"; }, | |
| 101 1: 27, | |
| 102 3() { | |
| 103 assertEquals("Base this is Derived", super[f]()); | |
| 104 var a = super[x]; | |
| 105 assertEquals(15, a); | |
| 106 assertEquals(15, super[x]); | |
| 107 assertEquals(27, this[x]); | |
| 108 return "Derived"; | |
| 109 } | |
| 110 }; | |
| 111 | |
| 112 assertEquals("Base this is Base", new Base()[f]()); | |
| 113 assertEquals("Derived", new Derived()[f]()); | |
| 114 }()); | |
| 115 | |
| 116 | |
| 117 (function TestSuperKeywordNonMethod() { | 84 (function TestSuperKeywordNonMethod() { |
| 118 'use strict'; | 85 'use strict'; |
| 119 | 86 |
| 120 class C { | 87 class C { |
| 121 f() { | 88 f() { |
| 122 super.unknown(); | 89 super.unknown(); |
| 123 } | 90 } |
| 124 } | 91 } |
| 125 | 92 |
| 126 assertThrows(function() { | 93 assertThrows(function() { |
| (...skipping 2156 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2283 } | 2250 } |
| 2284 class Derived extends Base { | 2251 class Derived extends Base { |
| 2285 constructor(x) { | 2252 constructor(x) { |
| 2286 let r = (() => super(...[x]))(); | 2253 let r = (() => super(...[x]))(); |
| 2287 assertEquals(this, r); | 2254 assertEquals(this, r); |
| 2288 } | 2255 } |
| 2289 } | 2256 } |
| 2290 let d = new Derived(42); | 2257 let d = new Derived(42); |
| 2291 assertSame(42, d.x); | 2258 assertSame(42, d.x); |
| 2292 })(); | 2259 })(); |
| OLD | NEW |