| OLD | NEW |
| 1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 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 2314 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2325 "yield // comment\n" | 2325 "yield // comment\n" |
| 2326 "(yield)", | 2326 "(yield)", |
| 2327 "[yield]", | 2327 "[yield]", |
| 2328 "{yield}", | 2328 "{yield}", |
| 2329 "yield, yield", | 2329 "yield, yield", |
| 2330 "yield; yield", | 2330 "yield; yield", |
| 2331 "(yield) ? yield : yield", | 2331 "(yield) ? yield : yield", |
| 2332 "(yield) \n ? yield : yield", | 2332 "(yield) \n ? yield : yield", |
| 2333 // If there is a newline before the next token, we don't look for RHS. | 2333 // If there is a newline before the next token, we don't look for RHS. |
| 2334 "yield\nfor (;;) {}", | 2334 "yield\nfor (;;) {}", |
| 2335 "x = class extends (yield) {}", |
| 2336 "x = class extends f(yield) {}", |
| 2337 "x = class extends (null, yield) { }", |
| 2338 "x = class extends (a ? null : yield) { }", |
| 2335 NULL | 2339 NULL |
| 2336 }; | 2340 }; |
| 2337 // clang-format on | 2341 // clang-format on |
| 2338 | 2342 |
| 2339 RunParserSyncTest(context_data, statement_data, kSuccess); | 2343 RunParserSyncTest(context_data, statement_data, kSuccess); |
| 2340 } | 2344 } |
| 2341 | 2345 |
| 2342 | 2346 |
| 2343 TEST(ErrorsYieldGenerator) { | 2347 TEST(ErrorsYieldGenerator) { |
| 2344 // clang-format off | 2348 // clang-format off |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2389 "({a: yield} = {a: 42});", | 2393 "({a: yield} = {a: 42});", |
| 2390 // Also disallow full yield expressions on LHS | 2394 // Also disallow full yield expressions on LHS |
| 2391 "var [yield 24] = [42];", | 2395 "var [yield 24] = [42];", |
| 2392 "var {foo: yield 24} = {a: 42};", | 2396 "var {foo: yield 24} = {a: 42};", |
| 2393 "[yield 24] = [42];", | 2397 "[yield 24] = [42];", |
| 2394 "({a: yield 24} = {a: 42});", | 2398 "({a: yield 24} = {a: 42});", |
| 2395 "for (yield 'x' in {});", | 2399 "for (yield 'x' in {});", |
| 2396 "for (yield 'x' of {});", | 2400 "for (yield 'x' of {});", |
| 2397 "for (yield 'x' in {} in {});", | 2401 "for (yield 'x' in {} in {});", |
| 2398 "for (yield 'x' in {} of {});", | 2402 "for (yield 'x' in {} of {});", |
| 2403 "class C extends yield { }", |
| 2399 NULL | 2404 NULL |
| 2400 }; | 2405 }; |
| 2401 // clang-format on | 2406 // clang-format on |
| 2402 | 2407 |
| 2403 RunParserSyncTest(context_data, statement_data, kError); | 2408 RunParserSyncTest(context_data, statement_data, kError); |
| 2404 } | 2409 } |
| 2405 | 2410 |
| 2406 | 2411 |
| 2407 TEST(ErrorsNameOfStrictFunction) { | 2412 TEST(ErrorsNameOfStrictFunction) { |
| 2408 // Tests that illegal tokens as names of a strict function produce the correct | 2413 // Tests that illegal tokens as names of a strict function produce the correct |
| (...skipping 4314 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6723 }; | 6728 }; |
| 6724 | 6729 |
| 6725 const char* strict_arrow_context_data[][2] = { | 6730 const char* strict_arrow_context_data[][2] = { |
| 6726 {"'use strict'; ((", ")=>{});"}, | 6731 {"'use strict'; ((", ")=>{});"}, |
| 6727 {NULL, NULL} | 6732 {NULL, NULL} |
| 6728 }; | 6733 }; |
| 6729 | 6734 |
| 6730 const char* generator_context_data[][2] = { | 6735 const char* generator_context_data[][2] = { |
| 6731 {"'use strict'; (function *g(", ") { });"}, | 6736 {"'use strict'; (function *g(", ") { });"}, |
| 6732 {"(function *g(", ") { });"}, | 6737 {"(function *g(", ") { });"}, |
| 6738 // Arrow function within generator has the same rules. |
| 6739 {"'use strict'; (function *g() { (", ") => {} });"}, |
| 6740 {"(function *g() { (", ") => {} });"}, |
| 6733 {NULL, NULL} | 6741 {NULL, NULL} |
| 6734 }; | 6742 }; |
| 6735 | 6743 |
| 6736 const char* parameter_data[] = { | 6744 const char* parameter_data[] = { |
| 6737 "x=yield", | 6745 "x=yield", |
| 6738 "x, y=yield", | 6746 "x, y=yield", |
| 6739 "{x=yield}", | 6747 "{x=yield}", |
| 6740 "[x=yield]", | 6748 "[x=yield]", |
| 6741 | 6749 |
| 6742 "x=(yield)", | 6750 "x=(yield)", |
| (...skipping 10 matching lines...) Expand all Loading... |
| 6753 "[x]=yield", | 6761 "[x]=yield", |
| 6754 | 6762 |
| 6755 "{x}=(yield)", | 6763 "{x}=(yield)", |
| 6756 "[x]=(yield)", | 6764 "[x]=(yield)", |
| 6757 | 6765 |
| 6758 "{x}=f(yield)", | 6766 "{x}=f(yield)", |
| 6759 "[x]=f(yield)", | 6767 "[x]=f(yield)", |
| 6760 NULL | 6768 NULL |
| 6761 }; | 6769 }; |
| 6762 | 6770 |
| 6771 // Because classes are always in strict mode, these are always errors. |
| 6772 const char* always_error_param_data[] = { |
| 6773 "x = class extends (yield) { }", |
| 6774 "x = class extends f(yield) { }", |
| 6775 "x = class extends (null, yield) { }", |
| 6776 "x = class extends (a ? null : yield) { }", |
| 6777 "[x] = [class extends (a ? null : yield) { }]", |
| 6778 "[x = class extends (a ? null : yield) { }]", |
| 6779 "[x = class extends (a ? null : yield) { }] = [null]", |
| 6780 NULL |
| 6781 }; |
| 6763 // clang-format on | 6782 // clang-format on |
| 6764 | 6783 |
| 6765 RunParserSyncTest(sloppy_function_context_data, parameter_data, kSuccess); | 6784 RunParserSyncTest(sloppy_function_context_data, parameter_data, kSuccess); |
| 6766 RunParserSyncTest(sloppy_arrow_context_data, parameter_data, kSuccess); | 6785 RunParserSyncTest(sloppy_arrow_context_data, parameter_data, kSuccess); |
| 6767 | 6786 |
| 6768 RunParserSyncTest(strict_function_context_data, parameter_data, kError); | 6787 RunParserSyncTest(strict_function_context_data, parameter_data, kError); |
| 6769 RunParserSyncTest(strict_arrow_context_data, parameter_data, kError); | 6788 RunParserSyncTest(strict_arrow_context_data, parameter_data, kError); |
| 6770 | 6789 |
| 6771 RunParserSyncTest(generator_context_data, parameter_data, kError); | 6790 RunParserSyncTest(generator_context_data, parameter_data, kError); |
| 6791 RunParserSyncTest(generator_context_data, always_error_param_data, kError); |
| 6772 } | 6792 } |
| 6773 | 6793 |
| 6774 | |
| 6775 TEST(SpreadArray) { | 6794 TEST(SpreadArray) { |
| 6776 const char* context_data[][2] = { | 6795 const char* context_data[][2] = { |
| 6777 {"'use strict';", ""}, {"", ""}, {NULL, NULL}}; | 6796 {"'use strict';", ""}, {"", ""}, {NULL, NULL}}; |
| 6778 | 6797 |
| 6779 // clang-format off | 6798 // clang-format off |
| 6780 const char* data[] = { | 6799 const char* data[] = { |
| 6781 "[...a]", | 6800 "[...a]", |
| 6782 "[a, ...b]", | 6801 "[a, ...b]", |
| 6783 "[...a,]", | 6802 "[...a,]", |
| 6784 "[...a, ,]", | 6803 "[...a, ,]", |
| (...skipping 645 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 7430 "for (const x = 0 in {});", | 7449 "for (const x = 0 in {});", |
| 7431 "for (let x = 0 in {});", | 7450 "for (let x = 0 in {});", |
| 7432 NULL | 7451 NULL |
| 7433 }; | 7452 }; |
| 7434 // clang-format on | 7453 // clang-format on |
| 7435 | 7454 |
| 7436 static const ParserFlag always_flags[] = {kAllowHarmonyForIn}; | 7455 static const ParserFlag always_flags[] = {kAllowHarmonyForIn}; |
| 7437 RunParserSyncTest(context_data, error_data, kError, nullptr, 0, always_flags, | 7456 RunParserSyncTest(context_data, error_data, kError, nullptr, 0, always_flags, |
| 7438 arraysize(always_flags)); | 7457 arraysize(always_flags)); |
| 7439 } | 7458 } |
| OLD | NEW |