| 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-classes --harmony-arrow-functions --allow-natives-syntax | 5 // Flags: --harmony-classes --harmony-arrow-functions --allow-natives-syntax |
| 6 // Flags: --harmony-spreadcalls | 6 |
| 7 | 7 |
| 8 (function TestSuperNamedLoads() { | 8 (function TestSuperNamedLoads() { |
| 9 function Base() { } | 9 function Base() { } |
| 10 function fBase() { } | 10 function fBase() { } |
| 11 Base.prototype = { | 11 Base.prototype = { |
| 12 f() { | 12 f() { |
| 13 return "Base " + this.toString(); | 13 return "Base " + this.toString(); |
| 14 }, | 14 }, |
| 15 x: 15, | 15 x: 15, |
| 16 toString() { | 16 toString() { |
| (...skipping 2083 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2100 class Derived extends Base { | 2100 class Derived extends Base { |
| 2101 arrow() { | 2101 arrow() { |
| 2102 assertSame(super.x, (() => super.x)()); | 2102 assertSame(super.x, (() => super.x)()); |
| 2103 assertSame(super.m(), (() => super.m())()); | 2103 assertSame(super.m(), (() => super.m())()); |
| 2104 return (() => super.m())(); | 2104 return (() => super.m())(); |
| 2105 } | 2105 } |
| 2106 } | 2106 } |
| 2107 let d = new Derived(); | 2107 let d = new Derived(); |
| 2108 assertSame(1, d.arrow()); | 2108 assertSame(1, d.arrow()); |
| 2109 })(); | 2109 })(); |
| 2110 | |
| 2111 | |
| 2112 (function TestSuperCallInEval() { | |
| 2113 'use strict'; | |
| 2114 class Base { | |
| 2115 constructor(x) { | |
| 2116 this.x = x; | |
| 2117 } | |
| 2118 } | |
| 2119 class Derived extends Base { | |
| 2120 constructor(x) { | |
| 2121 eval('super(x)'); | |
| 2122 } | |
| 2123 } | |
| 2124 let d = new Derived(42); | |
| 2125 assertSame(42, d.x); | |
| 2126 })(); | |
| 2127 | |
| 2128 | |
| 2129 (function TestSuperCallInArrow() { | |
| 2130 'use strict'; | |
| 2131 class Base { | |
| 2132 constructor(x) { | |
| 2133 this.x = x; | |
| 2134 } | |
| 2135 } | |
| 2136 class Derived extends Base { | |
| 2137 constructor(x) { | |
| 2138 (() => super(x))(); | |
| 2139 } | |
| 2140 } | |
| 2141 let d = new Derived(42); | |
| 2142 assertSame(42, d.x); | |
| 2143 })(); | |
| 2144 | |
| 2145 | |
| 2146 (function TestSuperCallEscapes() { | |
| 2147 'use strict'; | |
| 2148 class Base { | |
| 2149 constructor(x) { | |
| 2150 this.x = x; | |
| 2151 } | |
| 2152 } | |
| 2153 | |
| 2154 let f; | |
| 2155 class Derived extends Base { | |
| 2156 constructor() { | |
| 2157 f = () => super(2); | |
| 2158 } | |
| 2159 } | |
| 2160 assertThrows(function() { | |
| 2161 new Derived(); | |
| 2162 }, ReferenceError); | |
| 2163 | |
| 2164 let o = f(); | |
| 2165 assertEquals(2, o.x); | |
| 2166 assertInstanceof(o, Derived); | |
| 2167 | |
| 2168 assertThrows(function() { | |
| 2169 f(); | |
| 2170 }, ReferenceError); | |
| 2171 })(); | |
| 2172 | |
| 2173 | |
| 2174 (function TestSuperCallSpreadInEval() { | |
| 2175 'use strict'; | |
| 2176 class Base { | |
| 2177 constructor(x) { | |
| 2178 this.x = x; | |
| 2179 } | |
| 2180 } | |
| 2181 class Derived extends Base { | |
| 2182 constructor(x) { | |
| 2183 eval('super(...[x])'); | |
| 2184 } | |
| 2185 } | |
| 2186 let d = new Derived(42); | |
| 2187 assertSame(42, d.x); | |
| 2188 })(); | |
| 2189 | |
| 2190 | |
| 2191 (function TestSuperCallSpreadInArrow() { | |
| 2192 'use strict'; | |
| 2193 class Base { | |
| 2194 constructor(x) { | |
| 2195 this.x = x; | |
| 2196 } | |
| 2197 } | |
| 2198 class Derived extends Base { | |
| 2199 constructor(x) { | |
| 2200 (() => super(...[x]))(); | |
| 2201 } | |
| 2202 } | |
| 2203 let d = new Derived(42); | |
| 2204 assertSame(42, d.x); | |
| 2205 })(); | |
| OLD | NEW |