| 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 |
| (...skipping 369 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 380 assertThrows("var x = { get foo(" + word + ") { 'use strict'; } };", | 380 assertThrows("var x = { get foo(" + word + ") { 'use strict'; } };", |
| 381 SyntaxError); | 381 SyntaxError); |
| 382 assertThrows("var x = { set foo(" + word + ") { 'use strict'; } };", | 382 assertThrows("var x = { set foo(" + word + ") { 'use strict'; } };", |
| 383 SyntaxError); | 383 SyntaxError); |
| 384 } | 384 } |
| 385 | 385 |
| 386 for (var i = 0; i < future_reserved_words.length; i++) { | 386 for (var i = 0; i < future_reserved_words.length; i++) { |
| 387 testFutureReservedWord(future_reserved_words[i]); | 387 testFutureReservedWord(future_reserved_words[i]); |
| 388 } | 388 } |
| 389 | 389 |
| 390 function testAssignToUndefined(should_throw) { | 390 function testAssignToUndefined(test, should_throw) { |
| 391 "use strict"; | |
| 392 try { | 391 try { |
| 393 possibly_undefined_variable_for_strict_mode_test = "should throw?"; | 392 test(); |
| 394 } catch (e) { | 393 } catch (e) { |
| 395 assertTrue(should_throw, "strict mode"); | 394 assertTrue(should_throw, "strict mode"); |
| 396 assertInstanceof(e, ReferenceError, "strict mode"); | 395 assertInstanceof(e, ReferenceError, "strict mode"); |
| 397 return; | 396 return; |
| 398 } | 397 } |
| 399 assertFalse(should_throw, "strict mode"); | 398 assertFalse(should_throw, "strict mode"); |
| 400 } | 399 } |
| 401 | 400 |
| 402 testAssignToUndefined(true); | 401 function repeat(n, f) { |
| 403 testAssignToUndefined(true); | 402 for (var i = 0; i < n; i ++) { f(); } |
| 404 testAssignToUndefined(true); | 403 } |
| 404 |
| 405 function assignToUndefined() { |
| 406 "use strict"; |
| 407 possibly_undefined_variable_for_strict_mode_test = "should throw?"; |
| 408 } |
| 409 |
| 410 testAssignToUndefined(assignToUndefined, true); |
| 411 testAssignToUndefined(assignToUndefined, true); |
| 412 testAssignToUndefined(assignToUndefined, true); |
| 405 | 413 |
| 406 possibly_undefined_variable_for_strict_mode_test = "value"; | 414 possibly_undefined_variable_for_strict_mode_test = "value"; |
| 407 | 415 |
| 408 testAssignToUndefined(false); | 416 testAssignToUndefined(assignToUndefined, false); |
| 409 testAssignToUndefined(false); | 417 testAssignToUndefined(assignToUndefined, false); |
| 410 testAssignToUndefined(false); | 418 testAssignToUndefined(assignToUndefined, false); |
| 411 | 419 |
| 412 delete possibly_undefined_variable_for_strict_mode_test; | 420 delete possibly_undefined_variable_for_strict_mode_test; |
| 413 | 421 |
| 414 testAssignToUndefined(true); | 422 testAssignToUndefined(assignToUndefined, true); |
| 415 testAssignToUndefined(true); | 423 testAssignToUndefined(assignToUndefined, true); |
| 416 testAssignToUndefined(true); | 424 testAssignToUndefined(assignToUndefined, true); |
| 417 | 425 |
| 418 function repeat(n, f) { | 426 repeat(10, function() { testAssignToUndefined(assignToUndefined, true); }); |
| 419 for (var i = 0; i < n; i ++) { f(); } | 427 possibly_undefined_variable_for_strict_mode_test = "value"; |
| 428 repeat(10, function() { testAssignToUndefined(assignToUndefined, false); }); |
| 429 delete possibly_undefined_variable_for_strict_mode_test; |
| 430 repeat(10, function() { testAssignToUndefined(assignToUndefined, true); }); |
| 431 possibly_undefined_variable_for_strict_mode_test = undefined; |
| 432 repeat(10, function() { testAssignToUndefined(assignToUndefined, false); }); |
| 433 |
| 434 function assignToUndefinedWithEval() { |
| 435 "use strict"; |
| 436 possibly_undefined_variable_for_strict_mode_test_with_eval = "should throw?"; |
| 437 eval(""); |
| 420 } | 438 } |
| 421 | 439 |
| 422 repeat(10, function() { testAssignToUndefined(true); }); | 440 testAssignToUndefined(assignToUndefinedWithEval, true); |
| 423 possibly_undefined_variable_for_strict_mode_test = "value"; | 441 testAssignToUndefined(assignToUndefinedWithEval, true); |
| 424 repeat(10, function() { testAssignToUndefined(false); }); | 442 testAssignToUndefined(assignToUndefinedWithEval, true); |
| 425 delete possibly_undefined_variable_for_strict_mode_test; | 443 |
| 426 repeat(10, function() { testAssignToUndefined(true); }); | 444 possibly_undefined_variable_for_strict_mode_test_with_eval = "value"; |
| 427 possibly_undefined_variable_for_strict_mode_test = undefined; | 445 |
| 428 repeat(10, function() { testAssignToUndefined(false); }); | 446 testAssignToUndefined(assignToUndefinedWithEval, false); |
| 447 testAssignToUndefined(assignToUndefinedWithEval, false); |
| 448 testAssignToUndefined(assignToUndefinedWithEval, false); |
| 449 |
| 450 delete possibly_undefined_variable_for_strict_mode_test_with_eval; |
| 451 |
| 452 testAssignToUndefined(assignToUndefinedWithEval, true); |
| 453 testAssignToUndefined(assignToUndefinedWithEval, true); |
| 454 testAssignToUndefined(assignToUndefinedWithEval, true); |
| 455 |
| 456 repeat(10, function() { |
| 457 testAssignToUndefined(assignToUndefinedWithEval, true); |
| 458 }); |
| 459 possibly_undefined_variable_for_strict_mode_test_with_eval = "value"; |
| 460 repeat(10, function() { |
| 461 testAssignToUndefined(assignToUndefinedWithEval, false); |
| 462 }); |
| 463 delete possibly_undefined_variable_for_strict_mode_test_with_eval; |
| 464 repeat(10, function() { |
| 465 testAssignToUndefined(assignToUndefinedWithEval, true); |
| 466 }); |
| 467 possibly_undefined_variable_for_strict_mode_test_with_eval = undefined; |
| 468 repeat(10, function() { |
| 469 testAssignToUndefined(assignToUndefinedWithEval, false); |
| 470 }); |
| 471 |
| 472 |
| 429 | 473 |
| 430 (function testDeleteNonConfigurable() { | 474 (function testDeleteNonConfigurable() { |
| 431 function delete_property(o) { | 475 function delete_property(o) { |
| 432 "use strict"; | 476 "use strict"; |
| 433 delete o.property; | 477 delete o.property; |
| 434 } | 478 } |
| 435 function delete_element(o, i) { | 479 function delete_element(o, i) { |
| 436 "use strict"; | 480 "use strict"; |
| 437 delete o[i]; | 481 delete o[i]; |
| 438 } | 482 } |
| (...skipping 689 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1128 } catch(e) { | 1172 } catch(e) { |
| 1129 return e instanceof TypeError; | 1173 return e instanceof TypeError; |
| 1130 } | 1174 } |
| 1131 return false; | 1175 return false; |
| 1132 } | 1176 } |
| 1133 | 1177 |
| 1134 for (var i = 0; i < 10; i ++) { | 1178 for (var i = 0; i < 10; i ++) { |
| 1135 assertEquals(test(i), true); | 1179 assertEquals(test(i), true); |
| 1136 } | 1180 } |
| 1137 })(); | 1181 })(); |
| OLD | NEW |