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 1414 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1425 | 1425 |
1426 | 1426 |
1427 enum ParserFlag { | 1427 enum ParserFlag { |
1428 kAllowLazy, | 1428 kAllowLazy, |
1429 kAllowNatives, | 1429 kAllowNatives, |
1430 kAllowHarmonyModules, | 1430 kAllowHarmonyModules, |
1431 kAllowHarmonyArrowFunctions, | 1431 kAllowHarmonyArrowFunctions, |
1432 kAllowHarmonyRestParameters, | 1432 kAllowHarmonyRestParameters, |
1433 kAllowHarmonySloppy, | 1433 kAllowHarmonySloppy, |
1434 kAllowHarmonySloppyLet, | 1434 kAllowHarmonySloppyLet, |
1435 kAllowHarmonyUnicode, | |
1436 kAllowHarmonyComputedPropertyNames, | 1435 kAllowHarmonyComputedPropertyNames, |
1437 kAllowHarmonySpreadCalls, | 1436 kAllowHarmonySpreadCalls, |
1438 kAllowHarmonyDestructuring, | 1437 kAllowHarmonyDestructuring, |
1439 kAllowHarmonySpreadArrays, | 1438 kAllowHarmonySpreadArrays, |
1440 kAllowHarmonyNewTarget, | 1439 kAllowHarmonyNewTarget, |
1441 kAllowStrongMode, | 1440 kAllowStrongMode, |
1442 kNoLegacyConst | 1441 kNoLegacyConst |
1443 }; | 1442 }; |
1444 | 1443 |
1445 | 1444 |
(...skipping 10 matching lines...) Expand all Loading... |
1456 parser->set_allow_natives(flags.Contains(kAllowNatives)); | 1455 parser->set_allow_natives(flags.Contains(kAllowNatives)); |
1457 parser->set_allow_harmony_modules(flags.Contains(kAllowHarmonyModules)); | 1456 parser->set_allow_harmony_modules(flags.Contains(kAllowHarmonyModules)); |
1458 parser->set_allow_harmony_arrow_functions( | 1457 parser->set_allow_harmony_arrow_functions( |
1459 flags.Contains(kAllowHarmonyArrowFunctions)); | 1458 flags.Contains(kAllowHarmonyArrowFunctions)); |
1460 parser->set_allow_harmony_rest_parameters( | 1459 parser->set_allow_harmony_rest_parameters( |
1461 flags.Contains(kAllowHarmonyRestParameters)); | 1460 flags.Contains(kAllowHarmonyRestParameters)); |
1462 parser->set_allow_harmony_spreadcalls( | 1461 parser->set_allow_harmony_spreadcalls( |
1463 flags.Contains(kAllowHarmonySpreadCalls)); | 1462 flags.Contains(kAllowHarmonySpreadCalls)); |
1464 parser->set_allow_harmony_sloppy(flags.Contains(kAllowHarmonySloppy)); | 1463 parser->set_allow_harmony_sloppy(flags.Contains(kAllowHarmonySloppy)); |
1465 parser->set_allow_harmony_sloppy_let(flags.Contains(kAllowHarmonySloppyLet)); | 1464 parser->set_allow_harmony_sloppy_let(flags.Contains(kAllowHarmonySloppyLet)); |
1466 parser->set_allow_harmony_unicode(flags.Contains(kAllowHarmonyUnicode)); | |
1467 parser->set_allow_harmony_computed_property_names( | 1465 parser->set_allow_harmony_computed_property_names( |
1468 flags.Contains(kAllowHarmonyComputedPropertyNames)); | 1466 flags.Contains(kAllowHarmonyComputedPropertyNames)); |
1469 parser->set_allow_harmony_destructuring( | 1467 parser->set_allow_harmony_destructuring( |
1470 flags.Contains(kAllowHarmonyDestructuring)); | 1468 flags.Contains(kAllowHarmonyDestructuring)); |
1471 parser->set_allow_harmony_spread_arrays( | 1469 parser->set_allow_harmony_spread_arrays( |
1472 flags.Contains(kAllowHarmonySpreadArrays)); | 1470 flags.Contains(kAllowHarmonySpreadArrays)); |
1473 parser->set_allow_harmony_new_target(flags.Contains(kAllowHarmonyNewTarget)); | 1471 parser->set_allow_harmony_new_target(flags.Contains(kAllowHarmonyNewTarget)); |
1474 parser->set_allow_strong_mode(flags.Contains(kAllowStrongMode)); | 1472 parser->set_allow_strong_mode(flags.Contains(kAllowStrongMode)); |
1475 parser->set_allow_legacy_const(!flags.Contains(kNoLegacyConst)); | 1473 parser->set_allow_legacy_const(!flags.Contains(kNoLegacyConst)); |
1476 } | 1474 } |
(...skipping 3381 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4858 "\"foob\\u{c481r\"", | 4856 "\"foob\\u{c481r\"", |
4859 "var foob\\u{}ar = 0;", | 4857 "var foob\\u{}ar = 0;", |
4860 // Too high value for the unicode escape | 4858 // Too high value for the unicode escape |
4861 "\"\\u{110000}\"", | 4859 "\"\\u{110000}\"", |
4862 // Not an unicode escape | 4860 // Not an unicode escape |
4863 "var foob\\v1234r = 0;", | 4861 "var foob\\v1234r = 0;", |
4864 "var foob\\U1234r = 0;", | 4862 "var foob\\U1234r = 0;", |
4865 "var foob\\v{1234}r = 0;", | 4863 "var foob\\v{1234}r = 0;", |
4866 "var foob\\U{1234}r = 0;", | 4864 "var foob\\U{1234}r = 0;", |
4867 NULL}; | 4865 NULL}; |
4868 static const ParserFlag always_flags[] = {kAllowHarmonyUnicode}; | 4866 RunParserSyncTest(context_data, data, kError); |
4869 RunParserSyncTest(context_data, data, kError, NULL, 0, always_flags, | |
4870 arraysize(always_flags)); | |
4871 } | 4867 } |
4872 | 4868 |
4873 | 4869 |
4874 TEST(UnicodeEscapes) { | 4870 TEST(UnicodeEscapes) { |
4875 const char* context_data[][2] = {{"", ""}, | 4871 const char* context_data[][2] = {{"", ""}, |
4876 {"'use strict';", ""}, | 4872 {"'use strict';", ""}, |
4877 {NULL, NULL}}; | 4873 {NULL, NULL}}; |
4878 const char* data[] = { | 4874 const char* data[] = { |
4879 // Identifier starting with escape | 4875 // Identifier starting with escape |
4880 "var \\u0052oo = 0;", | 4876 "var \\u0052oo = 0;", |
4881 "var \\u{0052}oo = 0;", | 4877 "var \\u{0052}oo = 0;", |
4882 "var \\u{52}oo = 0;", | 4878 "var \\u{52}oo = 0;", |
4883 "var \\u{00000000052}oo = 0;", | 4879 "var \\u{00000000052}oo = 0;", |
4884 // Identifier with an escape but not starting with an escape | 4880 // Identifier with an escape but not starting with an escape |
4885 "var foob\\uc481r = 0;", | 4881 "var foob\\uc481r = 0;", |
4886 "var foob\\u{c481}r = 0;", | 4882 "var foob\\u{c481}r = 0;", |
4887 // String with an escape | 4883 // String with an escape |
4888 "\"foob\\uc481r\"", | 4884 "\"foob\\uc481r\"", |
4889 "\"foob\\{uc481}r\"", | 4885 "\"foob\\{uc481}r\"", |
4890 // This character is a valid unicode character, representable as a surrogate | 4886 // This character is a valid unicode character, representable as a surrogate |
4891 // pair, not representable as 4 hex digits. | 4887 // pair, not representable as 4 hex digits. |
4892 "\"foo\\u{10e6d}\"", | 4888 "\"foo\\u{10e6d}\"", |
4893 // Max value for the unicode escape | 4889 // Max value for the unicode escape |
4894 "\"\\u{10ffff}\"", | 4890 "\"\\u{10ffff}\"", |
4895 NULL}; | 4891 NULL}; |
4896 static const ParserFlag always_flags[] = {kAllowHarmonyUnicode}; | 4892 RunParserSyncTest(context_data, data, kSuccess); |
4897 RunParserSyncTest(context_data, data, kSuccess, NULL, 0, always_flags, | |
4898 arraysize(always_flags)); | |
4899 } | 4893 } |
4900 | 4894 |
4901 | 4895 |
4902 TEST(ScanTemplateLiterals) { | 4896 TEST(ScanTemplateLiterals) { |
4903 const char* context_data[][2] = {{"'use strict';", ""}, | 4897 const char* context_data[][2] = {{"'use strict';", ""}, |
4904 {"function foo(){ 'use strict';" | 4898 {"function foo(){ 'use strict';" |
4905 " var a, b, c; return ", "}"}, | 4899 " var a, b, c; return ", "}"}, |
4906 {NULL, NULL}}; | 4900 {NULL, NULL}}; |
4907 | 4901 |
4908 const char* data[] = { | 4902 const char* data[] = { |
(...skipping 1932 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6841 "for (let x of []) {}", | 6835 "for (let x of []) {}", |
6842 NULL | 6836 NULL |
6843 }; | 6837 }; |
6844 // clang-format on | 6838 // clang-format on |
6845 | 6839 |
6846 static const ParserFlag always_flags[] = {kAllowHarmonySloppy, | 6840 static const ParserFlag always_flags[] = {kAllowHarmonySloppy, |
6847 kAllowHarmonySloppyLet}; | 6841 kAllowHarmonySloppyLet}; |
6848 RunParserSyncTest(context_data, data, kSuccess, NULL, 0, always_flags, | 6842 RunParserSyncTest(context_data, data, kSuccess, NULL, 0, always_flags, |
6849 arraysize(always_flags)); | 6843 arraysize(always_flags)); |
6850 } | 6844 } |
OLD | NEW |