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 #include "src/v8.h" | 5 #include "src/v8.h" |
6 | 6 |
7 #include "test/cctest/compiler/function-tester.h" | 7 #include "test/cctest/compiler/function-tester.h" |
8 | 8 |
9 using namespace v8::internal; | 9 using namespace v8::internal; |
10 using namespace v8::internal::compiler; | 10 using namespace v8::internal::compiler; |
(...skipping 433 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
444 FunctionTester T("(function(a,b) { var x; with(a) { x = b; } return x; })"); | 444 FunctionTester T("(function(a,b) { var x; with(a) { x = b; } return x; })"); |
445 | 445 |
446 T.CheckCall(T.undefined(), T.NewObject("({x:23})"), T.Val(1)); | 446 T.CheckCall(T.undefined(), T.NewObject("({x:23})"), T.Val(1)); |
447 T.CheckCall(T.Val(2), T.NewObject("({y:23})"), T.Val(2)); | 447 T.CheckCall(T.Val(2), T.NewObject("({y:23})"), T.Val(2)); |
448 T.CheckCall(T.Val(23), T.NewObject("({b:23})"), T.Val(3)); | 448 T.CheckCall(T.Val(23), T.NewObject("({b:23})"), T.Val(3)); |
449 T.CheckCall(T.undefined(), T.NewObject("({__proto__:{x:42}})"), T.Val(4)); | 449 T.CheckCall(T.undefined(), T.NewObject("({__proto__:{x:42}})"), T.Val(4)); |
450 } | 450 } |
451 | 451 |
452 | 452 |
453 TEST(BlockLoadStore) { | 453 TEST(BlockLoadStore) { |
454 FLAG_harmony_scoping = true; | |
455 FunctionTester T("(function(a) { 'use strict'; { let x = a+a; return x; }})"); | 454 FunctionTester T("(function(a) { 'use strict'; { let x = a+a; return x; }})"); |
456 | 455 |
457 T.CheckCall(T.Val(46), T.Val(23)); | 456 T.CheckCall(T.Val(46), T.Val(23)); |
458 T.CheckCall(T.Val("aa"), T.Val("a")); | 457 T.CheckCall(T.Val("aa"), T.Val("a")); |
459 } | 458 } |
460 | 459 |
461 | 460 |
462 TEST(BlockLoadStoreNested) { | 461 TEST(BlockLoadStoreNested) { |
463 FLAG_harmony_scoping = true; | |
464 const char* src = | 462 const char* src = |
465 "(function(a,b) {" | 463 "(function(a,b) {" |
466 "'use strict';" | 464 "'use strict';" |
467 "{ let x = a, y = a;" | 465 "{ let x = a, y = a;" |
468 " { let y = b;" | 466 " { let y = b;" |
469 " return x + y;" | 467 " return x + y;" |
470 " }" | 468 " }" |
471 "}})"; | 469 "}})"; |
472 FunctionTester T(src); | 470 FunctionTester T(src); |
473 | 471 |
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
536 " get z() { return 0; }" | 534 " get z() { return 0; }" |
537 " constructor() {}" | 535 " constructor() {}" |
538 " }" | 536 " }" |
539 " return new C().x() + C.y();" | 537 " return new C().x() + C.y();" |
540 "})"; | 538 "})"; |
541 FunctionTester T(src); | 539 FunctionTester T(src); |
542 | 540 |
543 T.CheckCall(T.Val(65), T.Val(23), T.Val(42)); | 541 T.CheckCall(T.Val(65), T.Val(23), T.Val(42)); |
544 T.CheckCall(T.Val("ab"), T.Val("a"), T.Val("b")); | 542 T.CheckCall(T.Val("ab"), T.Val("a"), T.Val("b")); |
545 } | 543 } |
OLD | NEW |