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 'use strict'; | 5 'use strict'; |
6 | 6 |
7 // Flags: --harmony-computed-property-names --harmony-classes | 7 // Flags: --harmony-computed-property-names --harmony-classes |
8 | 8 |
9 | 9 |
10 function ID(x) { | 10 function ID(x) { |
(...skipping 294 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
305 set d(_) { | 305 set d(_) { |
306 calls++ | 306 calls++ |
307 } | 307 } |
308 } | 308 } |
309 new C4().d = 'D'; | 309 new C4().d = 'D'; |
310 assertEquals(1, calls); | 310 assertEquals(1, calls); |
311 })(); | 311 })(); |
312 | 312 |
313 | 313 |
314 (function TestPrototype() { | 314 (function TestPrototype() { |
315 // Normally a static prototype property is not allowed. | 315 assertThrows(function() { |
316 class C { | 316 class C { |
317 static ['prototype']() { | 317 static ['prototype']() { |
318 return 1; | 318 return 1; |
| 319 } |
319 } | 320 } |
320 } | 321 }, TypeError); |
321 assertEquals(1, C.prototype()); | |
322 | 322 |
323 class C2 { | 323 assertThrows(function() { |
324 static get ['prototype']() { | 324 class C2 { |
325 return 2; | 325 static get ['prototype']() { |
| 326 return 2; |
| 327 } |
326 } | 328 } |
327 } | 329 }, TypeError); |
328 assertEquals(2, C2.prototype); | |
329 | 330 |
330 var calls = 0; | 331 assertThrows(function() { |
331 class C3 { | 332 class C3 { |
332 static set ['prototype'](x) { | 333 static set ['prototype'](x) { |
333 assertEquals(3, x); | 334 assertEquals(3, x); |
334 calls++; | 335 } |
335 } | 336 } |
336 } | 337 }, TypeError); |
337 C3.prototype = 3; | |
338 assertEquals(1, calls); | |
339 | 338 |
340 class C4 { | 339 assertThrows(function() { |
341 static *['prototype']() { | 340 class C4 { |
342 yield 1; | 341 static *['prototype']() { |
343 yield 2; | 342 yield 1; |
| 343 yield 2; |
| 344 } |
344 } | 345 } |
345 } | 346 }, TypeError); |
346 var iter = C4.prototype(); | |
347 assertIteratorResult(1, false, iter.next()); | |
348 assertIteratorResult(2, false, iter.next()); | |
349 assertIteratorResult(undefined, true, iter.next()); | |
350 })(); | 347 })(); |
351 | 348 |
352 | 349 |
| 350 (function TestPrototypeConcat() { |
| 351 assertThrows(function() { |
| 352 class C { |
| 353 static ['pro' + 'tot' + 'ype']() { |
| 354 return 1; |
| 355 } |
| 356 } |
| 357 }, TypeError); |
| 358 |
| 359 assertThrows(function() { |
| 360 class C2 { |
| 361 static get ['pro' + 'tot' + 'ype']() { |
| 362 return 2; |
| 363 } |
| 364 } |
| 365 }, TypeError); |
| 366 |
| 367 assertThrows(function() { |
| 368 class C3 { |
| 369 static set ['pro' + 'tot' + 'ype'](x) { |
| 370 assertEquals(3, x); |
| 371 } |
| 372 } |
| 373 }, TypeError); |
| 374 |
| 375 assertThrows(function() { |
| 376 class C4 { |
| 377 static *['pro' + 'tot' + 'ype']() { |
| 378 yield 1; |
| 379 yield 2; |
| 380 } |
| 381 } |
| 382 }, TypeError); |
| 383 })(); |
| 384 |
| 385 |
353 (function TestConstructor() { | 386 (function TestConstructor() { |
354 // Normally a constructor property is not allowed. | 387 // Normally a constructor property is not allowed. |
355 class C { | 388 class C { |
356 ['constructor']() { | 389 ['constructor']() { |
357 return 1; | 390 return 1; |
358 } | 391 } |
359 } | 392 } |
360 assertTrue(C !== C.prototype.constructor); | 393 assertTrue(C !== C.prototype.constructor); |
361 assertEquals(1, new C().constructor()); | 394 assertEquals(1, new C().constructor()); |
362 | 395 |
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
423 class C { | 456 class C { |
424 get [C]() { return 42; } | 457 get [C]() { return 42; } |
425 } | 458 } |
426 }, ReferenceError); | 459 }, ReferenceError); |
427 assertThrows(function() { | 460 assertThrows(function() { |
428 class C { | 461 class C { |
429 set [C](_) { } | 462 set [C](_) { } |
430 } | 463 } |
431 }, ReferenceError); | 464 }, ReferenceError); |
432 })(); | 465 })(); |
OLD | NEW |