Chromium Code Reviews| 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 | 6 // Flags: --harmony-spreadcalls |
| 7 | 7 |
| 8 (function TestSuperNamedLoads() { | 8 (function TestSuperNamedLoads() { |
| 9 function Base() { } | 9 function Base() { } |
| 10 function fBase() { } | 10 function fBase() { } |
| (...skipping 1961 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1972 var derivedDerivedCalled = 0; | 1972 var derivedDerivedCalled = 0; |
| 1973 | 1973 |
| 1974 class Base { | 1974 class Base { |
| 1975 constructor() { | 1975 constructor() { |
| 1976 baseCalled++; | 1976 baseCalled++; |
| 1977 } | 1977 } |
| 1978 } | 1978 } |
| 1979 | 1979 |
| 1980 class Derived extends Base { | 1980 class Derived extends Base { |
| 1981 constructor() { | 1981 constructor() { |
| 1982 super(); | 1982 let r = super(); |
| 1983 derivedCalled++; | 1983 derivedCalled++; |
|
rossberg
2015/07/16 13:30:58
Nit: any reason to separate the computation and th
Michael Starzinger
2015/07/16 13:40:15
Done. Nope, no reason, I just do these things to s
| |
| 1984 assertEquals(this, r); | |
| 1984 } | 1985 } |
| 1985 } | 1986 } |
| 1986 | 1987 |
| 1987 assertEquals(Base, Base.prototype.constructor); | 1988 assertEquals(Base, Base.prototype.constructor); |
| 1988 assertEquals(Base.prototype, Derived.prototype.__proto__); | 1989 assertEquals(Base.prototype, Derived.prototype.__proto__); |
| 1989 | 1990 |
| 1990 baseCalled = 0; | 1991 baseCalled = 0; |
| 1991 derivedCalled = 0; | 1992 derivedCalled = 0; |
| 1992 new Derived(); | 1993 new Derived(); |
| 1993 assertEquals(1, baseCalled); | 1994 assertEquals(1, baseCalled); |
| 1994 assertEquals(1, derivedCalled); | 1995 assertEquals(1, derivedCalled); |
| 1995 | 1996 |
| 1996 class DerivedDerived extends Derived { | 1997 class DerivedDerived extends Derived { |
| 1997 constructor() { | 1998 constructor() { |
| 1998 super(); | 1999 let r = super(); |
| 1999 derivedDerivedCalled++; | 2000 derivedDerivedCalled++; |
| 2001 assertEquals(this, r); | |
| 2000 } | 2002 } |
| 2001 } | 2003 } |
| 2002 | 2004 |
| 2003 baseCalled = 0; | 2005 baseCalled = 0; |
| 2004 derivedCalled = 0; | 2006 derivedCalled = 0; |
| 2005 derivedDerivedCalled = 0; | 2007 derivedDerivedCalled = 0; |
| 2006 new DerivedDerived(); | 2008 new DerivedDerived(); |
| 2007 assertEquals(1, baseCalled); | 2009 assertEquals(1, baseCalled); |
| 2008 assertEquals(1, derivedCalled); | 2010 assertEquals(1, derivedCalled); |
| 2009 assertEquals(1, derivedDerivedCalled); | 2011 assertEquals(1, derivedDerivedCalled); |
| 2010 | 2012 |
| 2011 class Base2 { | 2013 class Base2 { |
| 2012 constructor(v) { | 2014 constructor(v) { |
| 2013 this.fromBase = v; | 2015 this.fromBase = v; |
| 2014 } | 2016 } |
| 2015 } | 2017 } |
| 2016 class Derived2 extends Base2 { | 2018 class Derived2 extends Base2 { |
| 2017 constructor(v1, v2) { | 2019 constructor(v1, v2) { |
| 2018 super(v1); | 2020 let r = super(v1); |
| 2019 this.fromDerived = v2; | 2021 this.fromDerived = v2; |
| 2022 assertEquals(this, r); | |
| 2020 } | 2023 } |
| 2021 } | 2024 } |
| 2022 | 2025 |
| 2023 var d = new Derived2("base", "derived"); | 2026 var d = new Derived2("base", "derived"); |
| 2024 assertEquals("base", d.fromBase); | 2027 assertEquals("base", d.fromBase); |
| 2025 assertEquals("derived", d.fromDerived); | 2028 assertEquals("derived", d.fromDerived); |
| 2026 | 2029 |
| 2027 var calls = 0; | 2030 var calls = 0; |
| 2028 class G { | 2031 class G { |
| 2029 constructor() { | 2032 constructor() { |
| (...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2121 | 2124 |
| 2122 (function TestSuperCallInEval() { | 2125 (function TestSuperCallInEval() { |
| 2123 'use strict'; | 2126 'use strict'; |
| 2124 class Base { | 2127 class Base { |
| 2125 constructor(x) { | 2128 constructor(x) { |
| 2126 this.x = x; | 2129 this.x = x; |
| 2127 } | 2130 } |
| 2128 } | 2131 } |
| 2129 class Derived extends Base { | 2132 class Derived extends Base { |
| 2130 constructor(x) { | 2133 constructor(x) { |
| 2131 eval('super(x)'); | 2134 let r = eval('super(x)'); |
| 2135 assertEquals(this, r); | |
| 2132 } | 2136 } |
| 2133 } | 2137 } |
| 2134 let d = new Derived(42); | 2138 let d = new Derived(42); |
| 2135 assertSame(42, d.x); | 2139 assertSame(42, d.x); |
| 2136 })(); | 2140 })(); |
| 2137 | 2141 |
| 2138 | 2142 |
| 2139 (function TestSuperCallInArrow() { | 2143 (function TestSuperCallInArrow() { |
| 2140 'use strict'; | 2144 'use strict'; |
| 2141 class Base { | 2145 class Base { |
| 2142 constructor(x) { | 2146 constructor(x) { |
| 2143 this.x = x; | 2147 this.x = x; |
| 2144 } | 2148 } |
| 2145 } | 2149 } |
| 2146 class Derived extends Base { | 2150 class Derived extends Base { |
| 2147 constructor(x) { | 2151 constructor(x) { |
| 2148 (() => super(x))(); | 2152 let r = (() => super(x))(); |
| 2153 assertEquals(this, r); | |
| 2149 } | 2154 } |
| 2150 } | 2155 } |
| 2151 let d = new Derived(42); | 2156 let d = new Derived(42); |
| 2152 assertSame(42, d.x); | 2157 assertSame(42, d.x); |
| 2153 })(); | 2158 })(); |
| 2154 | 2159 |
| 2155 | 2160 |
| 2156 (function TestSuperCallEscapes() { | 2161 (function TestSuperCallEscapes() { |
| 2157 'use strict'; | 2162 'use strict'; |
| 2158 class Base { | 2163 class Base { |
| (...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2224 | 2229 |
| 2225 (function TestSuperCallSpreadInEval() { | 2230 (function TestSuperCallSpreadInEval() { |
| 2226 'use strict'; | 2231 'use strict'; |
| 2227 class Base { | 2232 class Base { |
| 2228 constructor(x) { | 2233 constructor(x) { |
| 2229 this.x = x; | 2234 this.x = x; |
| 2230 } | 2235 } |
| 2231 } | 2236 } |
| 2232 class Derived extends Base { | 2237 class Derived extends Base { |
| 2233 constructor(x) { | 2238 constructor(x) { |
| 2234 eval('super(...[x])'); | 2239 let r = eval('super(...[x])'); |
| 2240 assertEquals(this, r); | |
| 2235 } | 2241 } |
| 2236 } | 2242 } |
| 2237 let d = new Derived(42); | 2243 let d = new Derived(42); |
| 2238 assertSame(42, d.x); | 2244 assertSame(42, d.x); |
| 2239 })(); | 2245 })(); |
| 2240 | 2246 |
| 2241 | 2247 |
| 2242 (function TestSuperCallSpreadInArrow() { | 2248 (function TestSuperCallSpreadInArrow() { |
| 2243 'use strict'; | 2249 'use strict'; |
| 2244 class Base { | 2250 class Base { |
| 2245 constructor(x) { | 2251 constructor(x) { |
| 2246 this.x = x; | 2252 this.x = x; |
| 2247 } | 2253 } |
| 2248 } | 2254 } |
| 2249 class Derived extends Base { | 2255 class Derived extends Base { |
| 2250 constructor(x) { | 2256 constructor(x) { |
| 2251 (() => super(...[x]))(); | 2257 let r = (() => super(...[x]))(); |
| 2258 assertEquals(this, r); | |
| 2252 } | 2259 } |
| 2253 } | 2260 } |
| 2254 let d = new Derived(42); | 2261 let d = new Derived(42); |
| 2255 assertSame(42, d.x); | 2262 assertSame(42, d.x); |
| 2256 })(); | 2263 })(); |
| OLD | NEW |