OLD | NEW |
---|---|
1 // Copyright 2015 the V8 project authors. All rights reserved. | 1 // Copyright 2015 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-function-name | 5 // Flags: --harmony-function-name |
6 // Flags: --harmony-destructuring-bind --harmony-destructuring-assignment | |
6 | 7 |
7 (function testVariableDeclarationsFunction() { | 8 (function testVariableDeclarationsFunction() { |
8 'use strict'; | 9 'use strict'; |
9 var a = function(){}; | 10 var a = function(){}; |
10 assertEquals('a', a.name); | 11 assertEquals('a', a.name); |
11 let b = () => {}; | 12 let b = () => {}; |
12 assertEquals('b', b.name); | 13 assertEquals('b', b.name); |
13 const c = ((function(){})); | 14 const c = ((function(){})); |
14 assertEquals('c', c.name); | 15 assertEquals('c', c.name); |
15 | 16 |
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
152 assertEquals('classWithName', classLit.name); | 153 assertEquals('classWithName', classLit.name); |
153 classLit = class { constructor() {} static name() {} }; | 154 classLit = class { constructor() {} static name() {} }; |
154 assertEquals('function', typeof classLit.name); | 155 assertEquals('function', typeof classLit.name); |
155 classLit = class { constructor() {} static get name() { return true; } }; | 156 classLit = class { constructor() {} static get name() { return true; } }; |
156 assertTrue(classLit.name); | 157 assertTrue(classLit.name); |
157 classLit = class { constructor() {} static ['name']() {} }; | 158 classLit = class { constructor() {} static ['name']() {} }; |
158 assertEquals('function', typeof classLit.name); | 159 assertEquals('function', typeof classLit.name); |
159 classLit = class { constructor() {} static get ['name']() { return true; } }; | 160 classLit = class { constructor() {} static get ['name']() { return true; } }; |
160 assertTrue(classLit.name); | 161 assertTrue(classLit.name); |
161 })(); | 162 })(); |
163 | |
164 (function testObjectBindingPattern() { | |
rossberg
2016/01/27 18:39:07
In all these cases, it might be good to also test
adamk
2016/01/27 18:46:38
Spec says that parentheses don't stop the name fro
| |
165 var { | |
166 a = function() {}, | |
167 b = () => {}, | |
168 x = function withName() { }, | |
169 y = class { }, | |
170 z = class ClassName { }, | |
171 q = class { static name() { return 42 } }, | |
172 foo: bar = function() {}, | |
173 } = {}; | |
174 assertEquals('a', a.name); | |
175 assertEquals('b', b.name); | |
176 assertEquals('withName', x.name); | |
177 assertEquals('y', y.name); | |
178 assertEquals('ClassName', z.name); | |
179 assertEquals('function', typeof q.name); | |
180 assertEquals('bar', bar.name); | |
181 })(); | |
182 | |
183 (function testArrayBindingPattern() { | |
184 var [ | |
185 a = function() {}, | |
186 b = () => {}, | |
187 x = function withName() { }, | |
188 y = class { }, | |
189 z = class ClassName { }, | |
190 q = class { static name() { return 42 } }, | |
191 ] = []; | |
192 assertEquals('a', a.name); | |
193 assertEquals('b', b.name); | |
194 assertEquals('withName', x.name); | |
195 assertEquals('y', y.name); | |
196 assertEquals('ClassName', z.name); | |
197 assertEquals('function', typeof q.name); | |
198 })(); | |
199 | |
200 (function testObjectAssignmentPattern() { | |
201 var a, b, x, y, z, q; | |
202 ({ | |
203 a = function() {}, | |
204 b = () => {}, | |
205 x = function withName() { }, | |
206 y = class { }, | |
207 z = class ClassName { }, | |
208 q = class { static name() { return 42 } }, | |
209 foo: bar = function() {}, | |
210 } = {}); | |
211 assertEquals('a', a.name); | |
212 assertEquals('b', b.name); | |
213 assertEquals('withName', x.name); | |
214 assertEquals('y', y.name); | |
215 assertEquals('ClassName', z.name); | |
216 assertEquals('function', typeof q.name); | |
217 assertEquals('bar', bar.name); | |
218 })(); | |
219 | |
220 (function testArrayAssignmentPattern() { | |
221 var a, b, x, y, z, q; | |
222 [ | |
223 a = function() {}, | |
224 b = () => {}, | |
225 x = function withName() { }, | |
226 y = class { }, | |
227 z = class ClassName { }, | |
228 q = class { static name() { return 42 } }, | |
229 ] = []; | |
230 assertEquals('a', a.name); | |
231 assertEquals('b', b.name); | |
232 assertEquals('withName', x.name); | |
233 assertEquals('y', y.name); | |
234 assertEquals('ClassName', z.name); | |
235 assertEquals('function', typeof q.name); | |
236 })(); | |
237 | |
238 (function testParameterDestructuring() { | |
239 (function({ a = function() {}, | |
240 b = () => {}, | |
241 x = function withName() { }, | |
242 y = class { }, | |
243 z = class ClassName { }, | |
244 q = class { static name() { return 42 } }, | |
245 foo: bar = function() {} }) { | |
246 assertEquals('a', a.name); | |
247 assertEquals('b', b.name); | |
248 assertEquals('withName', x.name); | |
249 assertEquals('y', y.name); | |
250 assertEquals('ClassName', z.name); | |
251 assertEquals('function', typeof q.name); | |
252 assertEquals('bar', bar.name); | |
253 })({}); | |
254 | |
255 (function([ a = function() {}, | |
256 b = () => {}, | |
257 x = function withName() { }, | |
258 y = class { }, | |
259 z = class ClassName { }, | |
260 q = class { static name() { return 42 } } ]) { | |
261 assertEquals('a', a.name); | |
262 assertEquals('b', b.name); | |
263 assertEquals('withName', x.name); | |
264 assertEquals('y', y.name); | |
265 assertEquals('ClassName', z.name); | |
266 assertEquals('function', typeof q.name); | |
267 })([]); | |
268 })(); | |
269 | |
270 (function testDefaultParameters() { | |
271 (function(a = function() {}, | |
272 b = () => {}, | |
273 x = function withName() { }, | |
274 y = class { }, | |
275 z = class ClassName { }, | |
276 q = class { static name() { return 42 } }) { | |
277 assertEquals('a', a.name); | |
278 assertEquals('b', b.name); | |
279 assertEquals('withName', x.name); | |
280 assertEquals('y', y.name); | |
281 assertEquals('ClassName', z.name); | |
282 assertEquals('function', typeof q.name); | |
283 })(); | |
284 })(); | |
OLD | NEW |