| 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 1355 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1366 i::DeleteArray(arg); | 1366 i::DeleteArray(arg); |
| 1367 data.Dispose(); | 1367 data.Dispose(); |
| 1368 return i::Handle<i::String>::cast(result); | 1368 return i::Handle<i::String>::cast(result); |
| 1369 } | 1369 } |
| 1370 | 1370 |
| 1371 | 1371 |
| 1372 enum ParserFlag { | 1372 enum ParserFlag { |
| 1373 kAllowLazy, | 1373 kAllowLazy, |
| 1374 kAllowNatives, | 1374 kAllowNatives, |
| 1375 kAllowHarmonyModules, | 1375 kAllowHarmonyModules, |
| 1376 kAllowHarmonyNumericLiterals, | |
| 1377 kAllowHarmonyArrowFunctions, | 1376 kAllowHarmonyArrowFunctions, |
| 1378 kAllowHarmonyClasses, | 1377 kAllowHarmonyClasses, |
| 1379 kAllowHarmonyObjectLiterals, | 1378 kAllowHarmonyObjectLiterals, |
| 1380 kAllowHarmonyRestParameters, | 1379 kAllowHarmonyRestParameters, |
| 1381 kAllowHarmonySloppy, | 1380 kAllowHarmonySloppy, |
| 1382 kAllowHarmonyUnicode, | 1381 kAllowHarmonyUnicode, |
| 1383 kAllowHarmonyComputedPropertyNames, | 1382 kAllowHarmonyComputedPropertyNames, |
| 1384 kAllowStrongMode | 1383 kAllowStrongMode |
| 1385 }; | 1384 }; |
| 1386 | 1385 |
| 1387 | 1386 |
| 1388 enum ParserSyncTestResult { | 1387 enum ParserSyncTestResult { |
| 1389 kSuccessOrError, | 1388 kSuccessOrError, |
| 1390 kSuccess, | 1389 kSuccess, |
| 1391 kError | 1390 kError |
| 1392 }; | 1391 }; |
| 1393 | 1392 |
| 1394 template <typename Traits> | 1393 template <typename Traits> |
| 1395 void SetParserFlags(i::ParserBase<Traits>* parser, | 1394 void SetParserFlags(i::ParserBase<Traits>* parser, |
| 1396 i::EnumSet<ParserFlag> flags) { | 1395 i::EnumSet<ParserFlag> flags) { |
| 1397 parser->set_allow_lazy(flags.Contains(kAllowLazy)); | 1396 parser->set_allow_lazy(flags.Contains(kAllowLazy)); |
| 1398 parser->set_allow_natives(flags.Contains(kAllowNatives)); | 1397 parser->set_allow_natives(flags.Contains(kAllowNatives)); |
| 1399 parser->set_allow_harmony_modules(flags.Contains(kAllowHarmonyModules)); | 1398 parser->set_allow_harmony_modules(flags.Contains(kAllowHarmonyModules)); |
| 1400 parser->set_allow_harmony_numeric_literals( | |
| 1401 flags.Contains(kAllowHarmonyNumericLiterals)); | |
| 1402 parser->set_allow_harmony_object_literals( | 1399 parser->set_allow_harmony_object_literals( |
| 1403 flags.Contains(kAllowHarmonyObjectLiterals)); | 1400 flags.Contains(kAllowHarmonyObjectLiterals)); |
| 1404 parser->set_allow_harmony_arrow_functions( | 1401 parser->set_allow_harmony_arrow_functions( |
| 1405 flags.Contains(kAllowHarmonyArrowFunctions)); | 1402 flags.Contains(kAllowHarmonyArrowFunctions)); |
| 1406 parser->set_allow_harmony_classes(flags.Contains(kAllowHarmonyClasses)); | 1403 parser->set_allow_harmony_classes(flags.Contains(kAllowHarmonyClasses)); |
| 1407 parser->set_allow_harmony_rest_params( | 1404 parser->set_allow_harmony_rest_params( |
| 1408 flags.Contains(kAllowHarmonyRestParameters)); | 1405 flags.Contains(kAllowHarmonyRestParameters)); |
| 1409 parser->set_allow_harmony_sloppy(flags.Contains(kAllowHarmonySloppy)); | 1406 parser->set_allow_harmony_sloppy(flags.Contains(kAllowHarmonySloppy)); |
| 1410 parser->set_allow_harmony_unicode(flags.Contains(kAllowHarmonyUnicode)); | 1407 parser->set_allow_harmony_unicode(flags.Contains(kAllowHarmonyUnicode)); |
| 1411 parser->set_allow_harmony_computed_property_names( | 1408 parser->set_allow_harmony_computed_property_names( |
| (...skipping 249 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1661 context_data[i][1]); | 1658 context_data[i][1]); |
| 1662 CHECK(length == kProgramSize); | 1659 CHECK(length == kProgramSize); |
| 1663 TestParserSync(program.start(), NULL, 0); | 1660 TestParserSync(program.start(), NULL, 0); |
| 1664 } | 1661 } |
| 1665 } | 1662 } |
| 1666 } | 1663 } |
| 1667 | 1664 |
| 1668 // Neither Harmony numeric literals nor our natives syntax have any | 1665 // Neither Harmony numeric literals nor our natives syntax have any |
| 1669 // interaction with the flags above, so test these separately to reduce | 1666 // interaction with the flags above, so test these separately to reduce |
| 1670 // the combinatorial explosion. | 1667 // the combinatorial explosion. |
| 1671 static const ParserFlag flags2[] = { kAllowHarmonyNumericLiterals }; | 1668 TestParserSync("0o1234", NULL, 0); |
| 1672 TestParserSync("0o1234", flags2, arraysize(flags2)); | 1669 TestParserSync("0b1011", NULL, 0); |
| 1673 TestParserSync("0b1011", flags2, arraysize(flags2)); | |
| 1674 | 1670 |
| 1675 static const ParserFlag flags3[] = { kAllowNatives }; | 1671 static const ParserFlag flags3[] = { kAllowNatives }; |
| 1676 TestParserSync("%DebugPrint(123)", flags3, arraysize(flags3)); | 1672 TestParserSync("%DebugPrint(123)", flags3, arraysize(flags3)); |
| 1677 } | 1673 } |
| 1678 | 1674 |
| 1679 | 1675 |
| 1680 TEST(StrictOctal) { | 1676 TEST(StrictOctal) { |
| 1681 // Test that syntax error caused by octal literal is reported correctly as | 1677 // Test that syntax error caused by octal literal is reported correctly as |
| 1682 // such (issue 2220). | 1678 // such (issue 2220). |
| 1683 v8::V8::Initialize(); | 1679 v8::V8::Initialize(); |
| (...skipping 2571 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4255 "class name { *", | 4251 "class name { *", |
| 4256 "class name { * }", | 4252 "class name { * }", |
| 4257 "class name { *; }", | 4253 "class name { *; }", |
| 4258 "class name { *get x() {} }", | 4254 "class name { *get x() {} }", |
| 4259 "class name { *set x(_) {} }", | 4255 "class name { *set x(_) {} }", |
| 4260 "class name { *static m() {} }", | 4256 "class name { *static m() {} }", |
| 4261 NULL}; | 4257 NULL}; |
| 4262 | 4258 |
| 4263 static const ParserFlag always_flags[] = { | 4259 static const ParserFlag always_flags[] = { |
| 4264 kAllowHarmonyClasses, | 4260 kAllowHarmonyClasses, |
| 4265 kAllowHarmonyNumericLiterals, | |
| 4266 kAllowHarmonySloppy | 4261 kAllowHarmonySloppy |
| 4267 }; | 4262 }; |
| 4268 RunParserSyncTest(context_data, class_data, kError, NULL, 0, | 4263 RunParserSyncTest(context_data, class_data, kError, NULL, 0, |
| 4269 always_flags, arraysize(always_flags)); | 4264 always_flags, arraysize(always_flags)); |
| 4270 } | 4265 } |
| 4271 | 4266 |
| 4272 | 4267 |
| 4273 TEST(ClassNameErrors) { | 4268 TEST(ClassNameErrors) { |
| 4274 const char* context_data[][2] = {{"class ", "{}"}, | 4269 const char* context_data[][2] = {{"class ", "{}"}, |
| 4275 {"(class ", "{});"}, | 4270 {"(class ", "{});"}, |
| (...skipping 1524 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5800 v8::Script::Compile(v8_str(script3)); | 5795 v8::Script::Compile(v8_str(script3)); |
| 5801 CHECK(try_catch2.HasCaught()); | 5796 CHECK(try_catch2.HasCaught()); |
| 5802 v8::String::Utf8Value exception(try_catch2.Exception()); | 5797 v8::String::Utf8Value exception(try_catch2.Exception()); |
| 5803 CHECK_EQ(0, | 5798 CHECK_EQ(0, |
| 5804 strcmp( | 5799 strcmp( |
| 5805 "ReferenceError: In strong mode, using an undeclared global " | 5800 "ReferenceError: In strong mode, using an undeclared global " |
| 5806 "variable 'not_there3' is not allowed", | 5801 "variable 'not_there3' is not allowed", |
| 5807 *exception)); | 5802 *exception)); |
| 5808 } | 5803 } |
| 5809 } | 5804 } |
| OLD | NEW |