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 3694 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3705 nullptr | 3705 nullptr |
3706 }; | 3706 }; |
3707 | 3707 |
3708 RunParserSyncTest(context_data, assignment_expression_suffix_data, kError); | 3708 RunParserSyncTest(context_data, assignment_expression_suffix_data, kError); |
3709 } | 3709 } |
3710 | 3710 |
3711 | 3711 |
3712 TEST(ErrorsArrowFunctions) { | 3712 TEST(ErrorsArrowFunctions) { |
3713 // Tests that parser and preparser generate the same kind of errors | 3713 // Tests that parser and preparser generate the same kind of errors |
3714 // on invalid arrow function syntax. | 3714 // on invalid arrow function syntax. |
| 3715 |
| 3716 // clang-format off |
3715 const char* context_data[][2] = { | 3717 const char* context_data[][2] = { |
3716 {"", ";"}, | 3718 {"", ";"}, |
3717 {"v = ", ";"}, | 3719 {"v = ", ";"}, |
3718 {"bar ? (", ") : baz;"}, | 3720 {"bar ? (", ") : baz;"}, |
3719 {"bar ? baz : (", ");"}, | 3721 {"bar ? baz : (", ");"}, |
3720 {"bar[", "];"}, | 3722 {"bar[", "];"}, |
3721 {"bar, ", ";"}, | 3723 {"bar, ", ";"}, |
3722 {"", ", bar;"}, | 3724 {"", ", bar;"}, |
3723 {NULL, NULL} | 3725 {NULL, NULL} |
3724 }; | 3726 }; |
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3805 "(a = b) => {}", | 3807 "(a = b) => {}", |
3806 "(a = b, c) => {}", | 3808 "(a = b, c) => {}", |
3807 "(a, b = c) => {}", | 3809 "(a, b = c) => {}", |
3808 "(foo ? bar : baz) => {}", | 3810 "(foo ? bar : baz) => {}", |
3809 "(a, foo ? bar : baz) => {}", | 3811 "(a, foo ? bar : baz) => {}", |
3810 "(foo ? bar : baz, a) => {}", | 3812 "(foo ? bar : baz, a) => {}", |
3811 "(a.b, c) => {}", | 3813 "(a.b, c) => {}", |
3812 "(c, a.b) => {}", | 3814 "(c, a.b) => {}", |
3813 "(a['b'], c) => {}", | 3815 "(a['b'], c) => {}", |
3814 "(c, a['b']) => {}", | 3816 "(c, a['b']) => {}", |
| 3817 |
| 3818 // crbug.com/582626 |
| 3819 "(...rest - a) => b", |
| 3820 "(a, ...b - 10) => b", |
| 3821 |
3815 NULL | 3822 NULL |
3816 }; | 3823 }; |
| 3824 // clang-format on |
3817 | 3825 |
3818 // The test is quite slow, so run it with a reduced set of flags. | 3826 // The test is quite slow, so run it with a reduced set of flags. |
3819 static const ParserFlag flags[] = {kAllowLazy}; | 3827 static const ParserFlag flags[] = {kAllowLazy}; |
3820 RunParserSyncTest(context_data, statement_data, kError, flags, | 3828 RunParserSyncTest(context_data, statement_data, kError, flags, |
3821 arraysize(flags)); | 3829 arraysize(flags)); |
3822 | 3830 |
3823 // In a context where a concise arrow body is parsed with [~In] variant, | 3831 // In a context where a concise arrow body is parsed with [~In] variant, |
3824 // ensure that an error is reported in both full parser and preparser. | 3832 // ensure that an error is reported in both full parser and preparser. |
3825 const char* loop_context_data[][2] = {{"for (", "; 0;);"}, | 3833 const char* loop_context_data[][2] = {{"for (", "; 0;);"}, |
3826 {nullptr, nullptr}}; | 3834 {nullptr, nullptr}}; |
(...skipping 4142 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
7969 RunParserSyncTest(sloppy_context_data, valid_data, kSuccess, NULL, 0, | 7977 RunParserSyncTest(sloppy_context_data, valid_data, kSuccess, NULL, 0, |
7970 always_flags, arraysize(always_flags)); | 7978 always_flags, arraysize(always_flags)); |
7971 RunParserSyncTest(strict_context_data, valid_data, kError, NULL, 0, | 7979 RunParserSyncTest(strict_context_data, valid_data, kError, NULL, 0, |
7972 always_flags, arraysize(always_flags)); | 7980 always_flags, arraysize(always_flags)); |
7973 RunModuleParserSyncTest(strict_context_data, valid_data, kError, NULL, 0, | 7981 RunModuleParserSyncTest(strict_context_data, valid_data, kError, NULL, 0, |
7974 always_flags, arraysize(always_flags)); | 7982 always_flags, arraysize(always_flags)); |
7975 } | 7983 } |
7976 | 7984 |
7977 | 7985 |
7978 TEST(MiscSyntaxErrors) { | 7986 TEST(MiscSyntaxErrors) { |
| 7987 // clang-format off |
7979 const char* context_data[][2] = { | 7988 const char* context_data[][2] = { |
7980 {"'use strict'", ""}, {"", ""}, {NULL, NULL}}; | 7989 { "'use strict'", "" }, |
7981 const char* error_data[] = {"for (();;) {}", NULL}; | 7990 { "", "" }, |
| 7991 { NULL, NULL } |
| 7992 }; |
| 7993 const char* error_data[] = { |
| 7994 "for (();;) {}", |
| 7995 |
| 7996 // crbug.com/582626 |
| 7997 "{ NaN ,chA((evarA=new t ( l = !.0[((... co -a0([1]))=> greturnkf", |
| 7998 NULL |
| 7999 }; |
| 8000 // clang-format on |
7982 | 8001 |
7983 RunParserSyncTest(context_data, error_data, kError, NULL, 0, NULL, 0); | 8002 RunParserSyncTest(context_data, error_data, kError, NULL, 0, NULL, 0); |
7984 } | 8003 } |
OLD | NEW |