Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(239)

Side by Side Diff: test/mjsunit/harmony/function-name.js

Issue 1634403002: Add ES2015 Function.name support to pattern and default parameter initializers (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Add caitp-requested tests Created 4 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/parsing/parser-base.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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 })();
OLDNEW
« no previous file with comments | « src/parsing/parser-base.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698