| OLD | NEW |
| 1 // Copyright 2011 the V8 project authors. All rights reserved. | 1 // Copyright 2011 the V8 project authors. All rights reserved. |
| 2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
| 3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
| 4 // met: | 4 // met: |
| 5 // | 5 // |
| 6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
| 7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
| 8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
| 9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
| 10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
| 11 // with the distribution. | 11 // with the distribution. |
| 12 // * Neither the name of Google Inc. nor the names of its | 12 // * Neither the name of Google Inc. nor the names of its |
| 13 // contributors may be used to endorse or promote products derived | 13 // contributors may be used to endorse or promote products derived |
| 14 // from this software without specific prior written permission. | 14 // from this software without specific prior written permission. |
| 15 // | 15 // |
| 16 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS | 16 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
| 17 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT | 17 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
| 18 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR | 18 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
| 19 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT | 19 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
| 20 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | 20 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
| 21 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | 21 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
| 22 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | 22 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
| 23 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | 23 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
| 24 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | 24 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
| 25 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | 25 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
| 26 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 26 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| 27 | 27 |
| 28 // Flags: --expose-debug-as debug --allow-natives-syntax | 28 // Flags: --expose-debug-as debug --allow-natives-syntax --harmony-generators |
| 29 // The functions used for testing backtraces. They are at the top to make the | 29 // The functions used for testing backtraces. They are at the top to make the |
| 30 // testing of source line/column easier. | 30 // testing of source line/column easier. |
| 31 | 31 |
| 32 // Get the Debug object exposed from the debug context global object. | 32 // Get the Debug object exposed from the debug context global object. |
| 33 var Debug = debug.Debug; | 33 var Debug = debug.Debug; |
| 34 | 34 |
| 35 var test_name; | 35 var test_name; |
| 36 var listener_delegate; | 36 var listener_delegate; |
| 37 var listener_called; | 37 var listener_called; |
| 38 var exception; | 38 var exception; |
| (...skipping 15 matching lines...) Expand all Loading... |
| 54 } | 54 } |
| 55 } | 55 } |
| 56 | 56 |
| 57 // Add the debug event listener. | 57 // Add the debug event listener. |
| 58 Debug.setListener(listener); | 58 Debug.setListener(listener); |
| 59 | 59 |
| 60 | 60 |
| 61 // Initialize for a new test. | 61 // Initialize for a new test. |
| 62 function BeginTest(name) { | 62 function BeginTest(name) { |
| 63 test_name = name; | 63 test_name = name; |
| 64 listener_delegate = null; | 64 var keep_listener = name.match(/^Generator/); |
| 65 if (!keep_listener) |
| 66 listener_delegate = null; |
| 65 listener_called = false; | 67 listener_called = false; |
| 66 exception = null; | 68 exception = null; |
| 67 begin_test_count++; | 69 begin_test_count++; |
| 68 } | 70 } |
| 69 | 71 |
| 70 | 72 |
| 71 // Check result of a test. | 73 // Check result of a test. |
| 72 function EndTest() { | 74 function EndTest() { |
| 73 assertTrue(listener_called, "listerner not called for " + test_name); | 75 assertTrue(listener_called, "listener not called for " + test_name); |
| 74 assertNull(exception, test_name + " / " + exception); | 76 assertNull(exception, test_name + " / " + exception); |
| 75 end_test_count++; | 77 end_test_count++; |
| 76 } | 78 } |
| 77 | 79 |
| 78 | 80 |
| 79 // Check that two scope are the same. | 81 // Check that two scope are the same. |
| 80 function assertScopeMirrorEquals(scope1, scope2) { | 82 function assertScopeMirrorEquals(scope1, scope2) { |
| 81 assertEquals(scope1.scopeType(), scope2.scopeType()); | 83 assertEquals(scope1.scopeType(), scope2.scopeType()); |
| 82 assertEquals(scope1.frameIndex(), scope2.frameIndex()); | 84 assertEquals(scope1.frameIndex(), scope2.frameIndex()); |
| 83 assertEquals(scope1.scopeIndex(), scope2.scopeIndex()); | 85 assertEquals(scope1.scopeIndex(), scope2.scopeIndex()); |
| (...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 215 | 217 |
| 216 listener_delegate = function(exec_state) { | 218 listener_delegate = function(exec_state) { |
| 217 CheckScopeChain([debug.ScopeType.Local, | 219 CheckScopeChain([debug.ScopeType.Local, |
| 218 debug.ScopeType.Global], exec_state); | 220 debug.ScopeType.Global], exec_state); |
| 219 CheckScopeContent({}, 0, exec_state); | 221 CheckScopeContent({}, 0, exec_state); |
| 220 }; | 222 }; |
| 221 local_1(); | 223 local_1(); |
| 222 EndTest(); | 224 EndTest(); |
| 223 | 225 |
| 224 | 226 |
| 227 BeginTest("Generator Local 1"); |
| 228 function *generator_local_1() { |
| 229 debugger; |
| 230 } |
| 231 generator_local_1().next(); |
| 232 EndTest(); |
| 233 |
| 234 |
| 225 // Local scope with a parameter. | 235 // Local scope with a parameter. |
| 226 BeginTest("Local 2"); | 236 BeginTest("Local 2"); |
| 227 | 237 |
| 228 function local_2(a) { | 238 function local_2(a) { |
| 229 debugger; | 239 debugger; |
| 230 } | 240 } |
| 231 | 241 |
| 232 listener_delegate = function(exec_state) { | 242 listener_delegate = function(exec_state) { |
| 233 CheckScopeChain([debug.ScopeType.Local, | 243 CheckScopeChain([debug.ScopeType.Local, |
| 234 debug.ScopeType.Global], exec_state); | 244 debug.ScopeType.Global], exec_state); |
| 235 CheckScopeContent({a:1}, 0, exec_state); | 245 CheckScopeContent({a:1}, 0, exec_state); |
| 236 }; | 246 }; |
| 237 local_2(1); | 247 local_2(1); |
| 238 EndTest(); | 248 EndTest(); |
| 239 | 249 |
| 240 | 250 |
| 251 BeginTest("Generator Local 2"); |
| 252 function *generator_local_2(a) { |
| 253 debugger; |
| 254 } |
| 255 generator_local_2(1).next(); |
| 256 EndTest(); |
| 257 |
| 258 |
| 241 // Local scope with a parameter and a local variable. | 259 // Local scope with a parameter and a local variable. |
| 242 BeginTest("Local 3"); | 260 BeginTest("Local 3"); |
| 243 | 261 |
| 244 function local_3(a) { | 262 function local_3(a) { |
| 245 var x = 3; | 263 var x = 3; |
| 246 debugger; | 264 debugger; |
| 247 } | 265 } |
| 248 | 266 |
| 249 listener_delegate = function(exec_state) { | 267 listener_delegate = function(exec_state) { |
| 250 CheckScopeChain([debug.ScopeType.Local, | 268 CheckScopeChain([debug.ScopeType.Local, |
| 251 debug.ScopeType.Global], exec_state); | 269 debug.ScopeType.Global], exec_state); |
| 252 CheckScopeContent({a:1,x:3}, 0, exec_state); | 270 CheckScopeContent({a:1,x:3}, 0, exec_state); |
| 253 }; | 271 }; |
| 254 local_3(1); | 272 local_3(1); |
| 255 EndTest(); | 273 EndTest(); |
| 256 | 274 |
| 257 | 275 |
| 276 BeginTest("Generator Local 3"); |
| 277 function *generator_local_3(a) { |
| 278 var x = 3; |
| 279 debugger; |
| 280 } |
| 281 generator_local_3(1).next(); |
| 282 EndTest(); |
| 283 |
| 284 |
| 258 // Local scope with parameters and local variables. | 285 // Local scope with parameters and local variables. |
| 259 BeginTest("Local 4"); | 286 BeginTest("Local 4"); |
| 260 | 287 |
| 261 function local_4(a, b) { | 288 function local_4(a, b) { |
| 262 var x = 3; | 289 var x = 3; |
| 263 var y = 4; | 290 var y = 4; |
| 264 debugger; | 291 debugger; |
| 265 } | 292 } |
| 266 | 293 |
| 267 listener_delegate = function(exec_state) { | 294 listener_delegate = function(exec_state) { |
| (...skipping 15 matching lines...) Expand all Loading... |
| 283 | 310 |
| 284 listener_delegate = function(exec_state) { | 311 listener_delegate = function(exec_state) { |
| 285 CheckScopeChain([debug.ScopeType.Local, | 312 CheckScopeChain([debug.ScopeType.Local, |
| 286 debug.ScopeType.Global], exec_state); | 313 debug.ScopeType.Global], exec_state); |
| 287 CheckScopeContent({}, 0, exec_state); | 314 CheckScopeContent({}, 0, exec_state); |
| 288 }; | 315 }; |
| 289 local_5(); | 316 local_5(); |
| 290 EndTest(); | 317 EndTest(); |
| 291 | 318 |
| 292 | 319 |
| 320 BeginTest("Generator Local 5"); |
| 321 function *generator_local_5() { |
| 322 eval(''); |
| 323 debugger; |
| 324 } |
| 325 generator_local_5().next(); |
| 326 EndTest(); |
| 327 |
| 328 |
| 293 // Local introducing local variable using eval. | 329 // Local introducing local variable using eval. |
| 294 BeginTest("Local 6"); | 330 BeginTest("Local 6"); |
| 295 | 331 |
| 296 function local_6() { | 332 function local_6() { |
| 297 eval('var i = 5'); | 333 eval('var i = 5'); |
| 298 debugger; | 334 debugger; |
| 299 } | 335 } |
| 300 | 336 |
| 301 listener_delegate = function(exec_state) { | 337 listener_delegate = function(exec_state) { |
| 302 CheckScopeChain([debug.ScopeType.Local, | 338 CheckScopeChain([debug.ScopeType.Local, |
| 303 debug.ScopeType.Global], exec_state); | 339 debug.ScopeType.Global], exec_state); |
| 304 CheckScopeContent({i:5}, 0, exec_state); | 340 CheckScopeContent({i:5}, 0, exec_state); |
| 305 }; | 341 }; |
| 306 local_6(); | 342 local_6(); |
| 307 EndTest(); | 343 EndTest(); |
| 308 | 344 |
| 309 | 345 |
| 346 BeginTest("Generator Local 6"); |
| 347 function *generator_local_6() { |
| 348 eval('var i = 5'); |
| 349 debugger; |
| 350 } |
| 351 generator_local_6().next(); |
| 352 EndTest(); |
| 353 |
| 354 |
| 310 // Local scope with parameters, local variables and local variable introduced | 355 // Local scope with parameters, local variables and local variable introduced |
| 311 // using eval. | 356 // using eval. |
| 312 BeginTest("Local 7"); | 357 BeginTest("Local 7"); |
| 313 | 358 |
| 314 function local_7(a, b) { | 359 function local_7(a, b) { |
| 315 var x = 3; | 360 var x = 3; |
| 316 var y = 4; | 361 var y = 4; |
| 317 eval('var i = 5'); | 362 eval('var i = 5'); |
| 318 eval('var j = 6'); | 363 eval('var j = 6'); |
| 319 debugger; | 364 debugger; |
| 320 } | 365 } |
| 321 | 366 |
| 322 listener_delegate = function(exec_state) { | 367 listener_delegate = function(exec_state) { |
| 323 CheckScopeChain([debug.ScopeType.Local, | 368 CheckScopeChain([debug.ScopeType.Local, |
| 324 debug.ScopeType.Global], exec_state); | 369 debug.ScopeType.Global], exec_state); |
| 325 CheckScopeContent({a:1,b:2,x:3,y:4,i:5,j:6}, 0, exec_state); | 370 CheckScopeContent({a:1,b:2,x:3,y:4,i:5,j:6}, 0, exec_state); |
| 326 }; | 371 }; |
| 327 local_7(1, 2); | 372 local_7(1, 2); |
| 328 EndTest(); | 373 EndTest(); |
| 329 | 374 |
| 330 | 375 |
| 376 BeginTest("Generator Local 7"); |
| 377 function *generator_local_7(a, b) { |
| 378 var x = 3; |
| 379 var y = 4; |
| 380 eval('var i = 5'); |
| 381 eval('var j = 6'); |
| 382 debugger; |
| 383 } |
| 384 generator_local_7(1, 2).next(); |
| 385 EndTest(); |
| 386 |
| 387 |
| 331 // Single empty with block. | 388 // Single empty with block. |
| 332 BeginTest("With 1"); | 389 BeginTest("With 1"); |
| 333 | 390 |
| 334 function with_1() { | 391 function with_1() { |
| 335 with({}) { | 392 with({}) { |
| 336 debugger; | 393 debugger; |
| 337 } | 394 } |
| 338 } | 395 } |
| 339 | 396 |
| 340 listener_delegate = function(exec_state) { | 397 listener_delegate = function(exec_state) { |
| (...skipping 22 matching lines...) Expand all Loading... |
| 363 debug.ScopeType.With, | 420 debug.ScopeType.With, |
| 364 debug.ScopeType.Local, | 421 debug.ScopeType.Local, |
| 365 debug.ScopeType.Global], exec_state); | 422 debug.ScopeType.Global], exec_state); |
| 366 CheckScopeContent({}, 0, exec_state); | 423 CheckScopeContent({}, 0, exec_state); |
| 367 CheckScopeContent({}, 1, exec_state); | 424 CheckScopeContent({}, 1, exec_state); |
| 368 }; | 425 }; |
| 369 with_2(); | 426 with_2(); |
| 370 EndTest(); | 427 EndTest(); |
| 371 | 428 |
| 372 | 429 |
| 430 BeginTest("Generator With 2"); |
| 431 function *generator_with_2() { |
| 432 with({}) { |
| 433 with({}) { |
| 434 debugger; |
| 435 } |
| 436 } |
| 437 } |
| 438 generator_with_2().next(); |
| 439 EndTest(); |
| 440 |
| 441 |
| 373 // With block using an in-place object literal. | 442 // With block using an in-place object literal. |
| 374 BeginTest("With 3"); | 443 BeginTest("With 3"); |
| 375 | 444 |
| 376 function with_3() { | 445 function with_3() { |
| 377 with({a:1,b:2}) { | 446 with({a:1,b:2}) { |
| 378 debugger; | 447 debugger; |
| 379 } | 448 } |
| 380 } | 449 } |
| 381 | 450 |
| 382 listener_delegate = function(exec_state) { | 451 listener_delegate = function(exec_state) { |
| (...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 477 }; | 546 }; |
| 478 with_7(); | 547 with_7(); |
| 479 EndTest(); | 548 EndTest(); |
| 480 | 549 |
| 481 | 550 |
| 482 // Simple closure formed by returning an inner function referering the outer | 551 // Simple closure formed by returning an inner function referering the outer |
| 483 // functions arguments. | 552 // functions arguments. |
| 484 BeginTest("Closure 1"); | 553 BeginTest("Closure 1"); |
| 485 | 554 |
| 486 function closure_1(a) { | 555 function closure_1(a) { |
| 487 function f() { | 556 return function() { |
| 488 debugger; | 557 debugger; |
| 489 return a; | 558 return a; |
| 490 }; | 559 }; |
| 491 return f; | |
| 492 } | 560 } |
| 493 | 561 |
| 494 listener_delegate = function(exec_state) { | 562 listener_delegate = function(exec_state) { |
| 495 CheckScopeChain([debug.ScopeType.Local, | 563 CheckScopeChain([debug.ScopeType.Local, |
| 496 debug.ScopeType.Closure, | 564 debug.ScopeType.Closure, |
| 497 debug.ScopeType.Global], exec_state); | 565 debug.ScopeType.Global], exec_state); |
| 498 CheckScopeContent({a:1}, 1, exec_state); | 566 CheckScopeContent({a:1}, 1, exec_state); |
| 499 }; | 567 }; |
| 500 closure_1(1)(); | 568 closure_1(1)(); |
| 501 EndTest(); | 569 EndTest(); |
| 502 | 570 |
| 503 | 571 |
| 572 BeginTest("Generator Closure 1"); |
| 573 function *generator_closure_1(a) { |
| 574 return function() { |
| 575 debugger; |
| 576 return a; |
| 577 }; |
| 578 } |
| 579 generator_closure_1(1).next().value(); |
| 580 EndTest(); |
| 581 |
| 582 |
| 504 // Simple closure formed by returning an inner function referering the outer | 583 // Simple closure formed by returning an inner function referering the outer |
| 505 // functions arguments. Due to VM optimizations parts of the actual closure is | 584 // functions arguments. Due to VM optimizations parts of the actual closure is |
| 506 // missing from the debugger information. | 585 // missing from the debugger information. |
| 507 BeginTest("Closure 2"); | 586 BeginTest("Closure 2"); |
| 508 | 587 |
| 509 function closure_2(a, b) { | 588 function closure_2(a, b) { |
| 510 var x = a + 2; | 589 var x = a + 2; |
| 511 var y = b + 2; | 590 var y = b + 2; |
| 512 function f() { | 591 function f() { |
| 513 debugger; | 592 debugger; |
| (...skipping 237 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 751 CheckScopeContent({a:15}, 1, exec_state); | 830 CheckScopeContent({a:15}, 1, exec_state); |
| 752 CheckScopeContent({x:14}, 2, exec_state); | 831 CheckScopeContent({x:14}, 2, exec_state); |
| 753 CheckScopeContent({j:13}, 3, exec_state); | 832 CheckScopeContent({j:13}, 3, exec_state); |
| 754 CheckScopeContent({a:1,b:2,x:9,y:10,i:11,j:12}, 4, exec_state); | 833 CheckScopeContent({a:1,b:2,x:9,y:10,i:11,j:12}, 4, exec_state); |
| 755 CheckScopeContent({a:1,b:2,x:3,y:4,i:5,j:6,f:function(){}}, 5, exec_state); | 834 CheckScopeContent({a:1,b:2,x:3,y:4,i:5,j:6,f:function(){}}, 5, exec_state); |
| 756 }; | 835 }; |
| 757 the_full_monty(1, 2)(); | 836 the_full_monty(1, 2)(); |
| 758 EndTest(); | 837 EndTest(); |
| 759 | 838 |
| 760 | 839 |
| 840 BeginTest("Generator the full monty"); |
| 841 function* generator_the_full_monty(a, b) { |
| 842 var x = 3; |
| 843 var y = 4; |
| 844 eval('var i = 5'); |
| 845 eval('var j = 6'); |
| 846 function f(a, b) { |
| 847 var x = 9; |
| 848 var y = 10; |
| 849 eval('var i = 11'); |
| 850 eval('var j = 12'); |
| 851 with ({j:13}){ |
| 852 return function() { |
| 853 var x = 14; |
| 854 with ({a:15}) { |
| 855 with ({b:16}) { |
| 856 debugger; |
| 857 some_global = a; |
| 858 return f; |
| 859 } |
| 860 } |
| 861 }; |
| 862 } |
| 863 } |
| 864 return f(a, b); |
| 865 } |
| 866 generator_the_full_monty(1, 2).next().value(); |
| 867 EndTest(); |
| 868 |
| 869 |
| 761 BeginTest("Closure inside With 1"); | 870 BeginTest("Closure inside With 1"); |
| 762 function closure_in_with_1() { | 871 function closure_in_with_1() { |
| 763 with({x:1}) { | 872 with({x:1}) { |
| 764 (function inner(x) { | 873 (function inner(x) { |
| 765 debugger; | 874 debugger; |
| 766 })(2); | 875 })(2); |
| 767 } | 876 } |
| 768 } | 877 } |
| 769 | 878 |
| 770 listener_delegate = function(exec_state) { | 879 listener_delegate = function(exec_state) { |
| (...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 871 listener_delegate = function(exec_state) { | 980 listener_delegate = function(exec_state) { |
| 872 CheckScopeChain([debug.ScopeType.Catch, | 981 CheckScopeChain([debug.ScopeType.Catch, |
| 873 debug.ScopeType.Local, | 982 debug.ScopeType.Local, |
| 874 debug.ScopeType.Global], exec_state); | 983 debug.ScopeType.Global], exec_state); |
| 875 CheckScopeContent({e:'Exception'}, 0, exec_state); | 984 CheckScopeContent({e:'Exception'}, 0, exec_state); |
| 876 }; | 985 }; |
| 877 catch_block_1(); | 986 catch_block_1(); |
| 878 EndTest(); | 987 EndTest(); |
| 879 | 988 |
| 880 | 989 |
| 990 BeginTest("Generator catch block 1"); |
| 991 function *generator_catch_block_1() { |
| 992 try { |
| 993 throw 'Exception'; |
| 994 } catch (e) { |
| 995 debugger; |
| 996 } |
| 997 }; |
| 998 generator_catch_block_1().next(); |
| 999 EndTest(); |
| 1000 |
| 1001 |
| 881 BeginTest("Catch block 2"); | 1002 BeginTest("Catch block 2"); |
| 882 function catch_block_2() { | 1003 function catch_block_2() { |
| 883 try { | 1004 try { |
| 884 throw 'Exception'; | 1005 throw 'Exception'; |
| 885 } catch (e) { | 1006 } catch (e) { |
| 886 with({n:10}) { | 1007 with({n:10}) { |
| 887 debugger; | 1008 debugger; |
| 888 } | 1009 } |
| 889 } | 1010 } |
| 890 }; | 1011 }; |
| (...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1009 CheckScopeContent({e:'Exception'}, 0, exec_state); | 1130 CheckScopeContent({e:'Exception'}, 0, exec_state); |
| 1010 }; | 1131 }; |
| 1011 catch_block_7(); | 1132 catch_block_7(); |
| 1012 EndTest(); | 1133 EndTest(); |
| 1013 | 1134 |
| 1014 | 1135 |
| 1015 assertEquals(begin_test_count, break_count, | 1136 assertEquals(begin_test_count, break_count, |
| 1016 'one or more tests did not enter the debugger'); | 1137 'one or more tests did not enter the debugger'); |
| 1017 assertEquals(begin_test_count, end_test_count, | 1138 assertEquals(begin_test_count, end_test_count, |
| 1018 'one or more tests did not have its result checked'); | 1139 'one or more tests did not have its result checked'); |
| OLD | NEW |