| 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 1028 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1039                              i::StrLength(surroundings[j].suffix) + | 1039                              i::StrLength(surroundings[j].suffix) + | 
| 1040                              i::StrLength(source_data[i].body); | 1040                              i::StrLength(source_data[i].body); | 
| 1041       i::ScopedVector<char> program(kProgramByteSize + 1); | 1041       i::ScopedVector<char> program(kProgramByteSize + 1); | 
| 1042       i::SNPrintF(program, "%s%s%s", surroundings[j].prefix, | 1042       i::SNPrintF(program, "%s%s%s", surroundings[j].prefix, | 
| 1043                   source_data[i].body, surroundings[j].suffix); | 1043                   source_data[i].body, surroundings[j].suffix); | 
| 1044       i::Handle<i::String> source = | 1044       i::Handle<i::String> source = | 
| 1045           factory->NewStringFromUtf8(i::CStrVector(program.start())) | 1045           factory->NewStringFromUtf8(i::CStrVector(program.start())) | 
| 1046               .ToHandleChecked(); | 1046               .ToHandleChecked(); | 
| 1047       i::Handle<i::Script> script = factory->NewScript(source); | 1047       i::Handle<i::Script> script = factory->NewScript(source); | 
| 1048       i::Zone zone; | 1048       i::Zone zone; | 
| 1049       i::ParseInfo info(&zone); | 1049       i::ParseInfo info(&zone, script); | 
| 1050       info.InitializeFromScript(script); |  | 
| 1051       i::Parser parser(&info); | 1050       i::Parser parser(&info); | 
| 1052       parser.set_allow_harmony_arrow_functions(true); | 1051       parser.set_allow_harmony_arrow_functions(true); | 
| 1053       parser.set_allow_harmony_classes(true); | 1052       parser.set_allow_harmony_classes(true); | 
| 1054       parser.set_allow_harmony_object_literals(true); | 1053       parser.set_allow_harmony_object_literals(true); | 
| 1055       parser.set_allow_harmony_scoping(true); | 1054       parser.set_allow_harmony_scoping(true); | 
| 1056       parser.set_allow_harmony_sloppy(true); | 1055       parser.set_allow_harmony_sloppy(true); | 
| 1057       info.set_global(); | 1056       info.set_global(); | 
| 1058       CHECK(parser.Parse(&info)); | 1057       CHECK(parser.Parse(&info)); | 
| 1059       CHECK(i::Rewriter::Rewrite(&info)); | 1058       CHECK(i::Rewriter::Rewrite(&info)); | 
| 1060       CHECK(i::Scope::Analyze(&info)); | 1059       CHECK(i::Scope::Analyze(&info)); | 
| (...skipping 231 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1292                          source_data[i].outer_prefix, | 1291                          source_data[i].outer_prefix, | 
| 1293                          source_data[i].inner_source, | 1292                          source_data[i].inner_source, | 
| 1294                          source_data[i].outer_suffix); | 1293                          source_data[i].outer_suffix); | 
| 1295 | 1294 | 
| 1296     // Parse program source. | 1295     // Parse program source. | 
| 1297     i::Handle<i::String> source = factory->NewStringFromUtf8( | 1296     i::Handle<i::String> source = factory->NewStringFromUtf8( | 
| 1298         i::CStrVector(program.start())).ToHandleChecked(); | 1297         i::CStrVector(program.start())).ToHandleChecked(); | 
| 1299     CHECK_EQ(source->length(), kProgramSize); | 1298     CHECK_EQ(source->length(), kProgramSize); | 
| 1300     i::Handle<i::Script> script = factory->NewScript(source); | 1299     i::Handle<i::Script> script = factory->NewScript(source); | 
| 1301     i::Zone zone; | 1300     i::Zone zone; | 
| 1302     i::ParseInfo info(&zone); | 1301     i::ParseInfo info(&zone, script); | 
| 1303     info.InitializeFromScript(script); |  | 
| 1304     i::Parser parser(&info); | 1302     i::Parser parser(&info); | 
| 1305     parser.set_allow_lazy(true); | 1303     parser.set_allow_lazy(true); | 
| 1306     parser.set_allow_harmony_scoping(true); | 1304     parser.set_allow_harmony_scoping(true); | 
| 1307     parser.set_allow_harmony_arrow_functions(true); | 1305     parser.set_allow_harmony_arrow_functions(true); | 
| 1308     info.set_global(); | 1306     info.set_global(); | 
| 1309     info.set_language_mode(source_data[i].language_mode); | 1307     info.set_language_mode(source_data[i].language_mode); | 
| 1310     parser.Parse(&info); | 1308     parser.Parse(&info); | 
| 1311     CHECK(info.function() != NULL); | 1309     CHECK(info.function() != NULL); | 
| 1312 | 1310 | 
| 1313     // Check scope types and positions. | 1311     // Check scope types and positions. | 
| (...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1452     CHECK_EQ(i::PreParser::kPreParseSuccess, result); | 1450     CHECK_EQ(i::PreParser::kPreParseSuccess, result); | 
| 1453   } | 1451   } | 
| 1454 | 1452 | 
| 1455   bool preparse_error = log.HasError(); | 1453   bool preparse_error = log.HasError(); | 
| 1456 | 1454 | 
| 1457   // Parse the data | 1455   // Parse the data | 
| 1458   i::FunctionLiteral* function; | 1456   i::FunctionLiteral* function; | 
| 1459   { | 1457   { | 
| 1460     i::Handle<i::Script> script = factory->NewScript(source); | 1458     i::Handle<i::Script> script = factory->NewScript(source); | 
| 1461     i::Zone zone; | 1459     i::Zone zone; | 
| 1462     i::ParseInfo info(&zone); | 1460     i::ParseInfo info(&zone, script); | 
| 1463     info.InitializeFromScript(script); |  | 
| 1464     i::Parser parser(&info); | 1461     i::Parser parser(&info); | 
| 1465     SetParserFlags(&parser, flags); | 1462     SetParserFlags(&parser, flags); | 
| 1466     info.set_global(); | 1463     info.set_global(); | 
| 1467     parser.Parse(&info); | 1464     parser.Parse(&info); | 
| 1468     function = info.function(); | 1465     function = info.function(); | 
| 1469     if (function) { | 1466     if (function) { | 
| 1470       parser_materialized_literals = function->materialized_literal_count(); | 1467       parser_materialized_literals = function->materialized_literal_count(); | 
| 1471     } | 1468     } | 
| 1472   } | 1469   } | 
| 1473 | 1470 | 
| (...skipping 1067 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 2541     {NULL, 0} | 2538     {NULL, 0} | 
| 2542   }; | 2539   }; | 
| 2543 | 2540 | 
| 2544   for (int i = 0; test_cases[i].program; i++) { | 2541   for (int i = 0; test_cases[i].program; i++) { | 
| 2545     const char* program = test_cases[i].program; | 2542     const char* program = test_cases[i].program; | 
| 2546     i::Factory* factory = CcTest::i_isolate()->factory(); | 2543     i::Factory* factory = CcTest::i_isolate()->factory(); | 
| 2547     i::Handle<i::String> source = | 2544     i::Handle<i::String> source = | 
| 2548         factory->NewStringFromUtf8(i::CStrVector(program)).ToHandleChecked(); | 2545         factory->NewStringFromUtf8(i::CStrVector(program)).ToHandleChecked(); | 
| 2549     i::Handle<i::Script> script = factory->NewScript(source); | 2546     i::Handle<i::Script> script = factory->NewScript(source); | 
| 2550     i::Zone zone; | 2547     i::Zone zone; | 
| 2551     i::ParseInfo info(&zone); | 2548     i::ParseInfo info(&zone, script); | 
| 2552     info.InitializeFromScript(script); |  | 
| 2553     i::ScriptData* sd = NULL; | 2549     i::ScriptData* sd = NULL; | 
| 2554     info.set_cached_data(&sd); | 2550     info.set_cached_data(&sd); | 
| 2555     info.set_compile_options(v8::ScriptCompiler::kProduceParserCache); | 2551     info.set_compile_options(v8::ScriptCompiler::kProduceParserCache); | 
| 2556     info.set_allow_lazy_parsing(); | 2552     info.set_allow_lazy_parsing(); | 
| 2557     i::Parser::ParseStatic(&info); | 2553     i::Parser::ParseStatic(&info); | 
| 2558     i::ParseData* pd = i::ParseData::FromCachedData(sd); | 2554     i::ParseData* pd = i::ParseData::FromCachedData(sd); | 
| 2559 | 2555 | 
| 2560     if (pd->FunctionCount() != test_cases[i].functions) { | 2556     if (pd->FunctionCount() != test_cases[i].functions) { | 
| 2561       v8::base::OS::Print( | 2557       v8::base::OS::Print( | 
| 2562           "Expected preparse data for program:\n" | 2558           "Expected preparse data for program:\n" | 
| (...skipping 805 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 3368 | 3364 | 
| 3369           i::SNPrintF(program, "%s%s%s%s%s%s%s", prefix, outer_comment, outer, | 3365           i::SNPrintF(program, "%s%s%s%s%s%s%s", prefix, outer_comment, outer, | 
| 3370                       midfix, inner_comment, inner, suffix); | 3366                       midfix, inner_comment, inner, suffix); | 
| 3371           i::Handle<i::String> source = | 3367           i::Handle<i::String> source = | 
| 3372               factory->InternalizeUtf8String(program.start()); | 3368               factory->InternalizeUtf8String(program.start()); | 
| 3373           source->PrintOn(stdout); | 3369           source->PrintOn(stdout); | 
| 3374           printf("\n"); | 3370           printf("\n"); | 
| 3375 | 3371 | 
| 3376           i::Handle<i::Script> script = factory->NewScript(source); | 3372           i::Handle<i::Script> script = factory->NewScript(source); | 
| 3377           i::Zone zone; | 3373           i::Zone zone; | 
| 3378           i::ParseInfo info(&zone); | 3374           i::ParseInfo info(&zone, script); | 
| 3379           info.InitializeFromScript(script); |  | 
| 3380           i::Parser parser(&info); | 3375           i::Parser parser(&info); | 
| 3381           parser.set_allow_harmony_scoping(true); | 3376           parser.set_allow_harmony_scoping(true); | 
| 3382           CHECK(parser.Parse(&info)); | 3377           CHECK(parser.Parse(&info)); | 
| 3383           CHECK(i::Compiler::Analyze(&info)); | 3378           CHECK(i::Compiler::Analyze(&info)); | 
| 3384           CHECK(info.function() != NULL); | 3379           CHECK(info.function() != NULL); | 
| 3385 | 3380 | 
| 3386           i::Scope* scope = info.function()->scope(); | 3381           i::Scope* scope = info.function()->scope(); | 
| 3387           CHECK_EQ(scope->inner_scopes()->length(), 1); | 3382           CHECK_EQ(scope->inner_scopes()->length(), 1); | 
| 3388           i::Scope* inner_scope = scope->inner_scopes()->at(0); | 3383           i::Scope* inner_scope = scope->inner_scopes()->at(0); | 
| 3389           const i::AstRawString* var_name = | 3384           const i::AstRawString* var_name = | 
| (...skipping 1689 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 5079                                         128 * 1024); | 5074                                         128 * 1024); | 
| 5080 | 5075 | 
| 5081   for (unsigned i = 0; i < arraysize(kSources); ++i) { | 5076   for (unsigned i = 0; i < arraysize(kSources); ++i) { | 
| 5082     i::Handle<i::String> source = | 5077     i::Handle<i::String> source = | 
| 5083         factory->NewStringFromAsciiChecked(kSources[i]); | 5078         factory->NewStringFromAsciiChecked(kSources[i]); | 
| 5084 | 5079 | 
| 5085     // Show that parsing as a module works | 5080     // Show that parsing as a module works | 
| 5086     { | 5081     { | 
| 5087       i::Handle<i::Script> script = factory->NewScript(source); | 5082       i::Handle<i::Script> script = factory->NewScript(source); | 
| 5088       i::Zone zone; | 5083       i::Zone zone; | 
| 5089       i::ParseInfo info(&zone); | 5084       i::ParseInfo info(&zone, script); | 
| 5090       info.InitializeFromScript(script); |  | 
| 5091       i::Parser parser(&info); | 5085       i::Parser parser(&info); | 
| 5092       parser.set_allow_harmony_classes(true); | 5086       parser.set_allow_harmony_classes(true); | 
| 5093       parser.set_allow_harmony_modules(true); | 5087       parser.set_allow_harmony_modules(true); | 
| 5094       parser.set_allow_harmony_scoping(true); | 5088       parser.set_allow_harmony_scoping(true); | 
| 5095       info.set_module(); | 5089       info.set_module(); | 
| 5096       if (!parser.Parse(&info)) { | 5090       if (!parser.Parse(&info)) { | 
| 5097         i::Handle<i::JSObject> exception_handle( | 5091         i::Handle<i::JSObject> exception_handle( | 
| 5098             i::JSObject::cast(isolate->pending_exception())); | 5092             i::JSObject::cast(isolate->pending_exception())); | 
| 5099         i::Handle<i::String> message_string = | 5093         i::Handle<i::String> message_string = | 
| 5100             i::Handle<i::String>::cast(i::Object::GetProperty( | 5094             i::Handle<i::String>::cast(i::Object::GetProperty( | 
| 5101                   isolate, exception_handle, "message").ToHandleChecked()); | 5095                   isolate, exception_handle, "message").ToHandleChecked()); | 
| 5102 | 5096 | 
| 5103         v8::base::OS::Print( | 5097         v8::base::OS::Print( | 
| 5104             "Parser failed on:\n" | 5098             "Parser failed on:\n" | 
| 5105             "\t%s\n" | 5099             "\t%s\n" | 
| 5106             "with error:\n" | 5100             "with error:\n" | 
| 5107             "\t%s\n" | 5101             "\t%s\n" | 
| 5108             "However, we expected no error.", | 5102             "However, we expected no error.", | 
| 5109             source->ToCString().get(), message_string->ToCString().get()); | 5103             source->ToCString().get(), message_string->ToCString().get()); | 
| 5110         CHECK(false); | 5104         CHECK(false); | 
| 5111       } | 5105       } | 
| 5112     } | 5106     } | 
| 5113 | 5107 | 
| 5114     // And that parsing a script does not. | 5108     // And that parsing a script does not. | 
| 5115     { | 5109     { | 
| 5116       i::Handle<i::Script> script = factory->NewScript(source); | 5110       i::Handle<i::Script> script = factory->NewScript(source); | 
| 5117       i::Zone zone; | 5111       i::Zone zone; | 
| 5118       i::ParseInfo info(&zone); | 5112       i::ParseInfo info(&zone, script); | 
| 5119       info.InitializeFromScript(script); |  | 
| 5120       i::Parser parser(&info); | 5113       i::Parser parser(&info); | 
| 5121       parser.set_allow_harmony_classes(true); | 5114       parser.set_allow_harmony_classes(true); | 
| 5122       parser.set_allow_harmony_modules(true); | 5115       parser.set_allow_harmony_modules(true); | 
| 5123       parser.set_allow_harmony_scoping(true); | 5116       parser.set_allow_harmony_scoping(true); | 
| 5124       info.set_global(); | 5117       info.set_global(); | 
| 5125       CHECK(!parser.Parse(&info)); | 5118       CHECK(!parser.Parse(&info)); | 
| 5126     } | 5119     } | 
| 5127   } | 5120   } | 
| 5128 } | 5121 } | 
| 5129 | 5122 | 
| (...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 5200 | 5193 | 
| 5201   isolate->stack_guard()->SetStackLimit(i::GetCurrentStackPosition() - | 5194   isolate->stack_guard()->SetStackLimit(i::GetCurrentStackPosition() - | 
| 5202                                         128 * 1024); | 5195                                         128 * 1024); | 
| 5203 | 5196 | 
| 5204   for (unsigned i = 0; i < arraysize(kErrorSources); ++i) { | 5197   for (unsigned i = 0; i < arraysize(kErrorSources); ++i) { | 
| 5205     i::Handle<i::String> source = | 5198     i::Handle<i::String> source = | 
| 5206         factory->NewStringFromAsciiChecked(kErrorSources[i]); | 5199         factory->NewStringFromAsciiChecked(kErrorSources[i]); | 
| 5207 | 5200 | 
| 5208     i::Handle<i::Script> script = factory->NewScript(source); | 5201     i::Handle<i::Script> script = factory->NewScript(source); | 
| 5209     i::Zone zone; | 5202     i::Zone zone; | 
| 5210     i::ParseInfo info(&zone); | 5203     i::ParseInfo info(&zone, script); | 
| 5211     info.InitializeFromScript(script); |  | 
| 5212     i::Parser parser(&info); | 5204     i::Parser parser(&info); | 
| 5213     parser.set_allow_harmony_classes(true); | 5205     parser.set_allow_harmony_classes(true); | 
| 5214     parser.set_allow_harmony_modules(true); | 5206     parser.set_allow_harmony_modules(true); | 
| 5215     parser.set_allow_harmony_scoping(true); | 5207     parser.set_allow_harmony_scoping(true); | 
| 5216     info.set_module(); | 5208     info.set_module(); | 
| 5217     CHECK(!parser.Parse(&info)); | 5209     CHECK(!parser.Parse(&info)); | 
| 5218   } | 5210   } | 
| 5219 } | 5211 } | 
| 5220 | 5212 | 
| 5221 | 5213 | 
| 5222 TEST(ModuleParsingInternals) { | 5214 TEST(ModuleParsingInternals) { | 
| 5223   i::FLAG_harmony_modules = true; | 5215   i::FLAG_harmony_modules = true; | 
| 5224 | 5216 | 
| 5225   i::Isolate* isolate = CcTest::i_isolate(); | 5217   i::Isolate* isolate = CcTest::i_isolate(); | 
| 5226   i::Factory* factory = isolate->factory(); | 5218   i::Factory* factory = isolate->factory(); | 
| 5227   v8::HandleScope handles(CcTest::isolate()); | 5219   v8::HandleScope handles(CcTest::isolate()); | 
| 5228   v8::Handle<v8::Context> context = v8::Context::New(CcTest::isolate()); | 5220   v8::Handle<v8::Context> context = v8::Context::New(CcTest::isolate()); | 
| 5229   v8::Context::Scope context_scope(context); | 5221   v8::Context::Scope context_scope(context); | 
| 5230   isolate->stack_guard()->SetStackLimit(i::GetCurrentStackPosition() - | 5222   isolate->stack_guard()->SetStackLimit(i::GetCurrentStackPosition() - | 
| 5231                                         128 * 1024); | 5223                                         128 * 1024); | 
| 5232 | 5224 | 
| 5233   static const char kSource[] = | 5225   static const char kSource[] = | 
| 5234       "let x = 5;" | 5226       "let x = 5;" | 
| 5235       "export { x as y };" | 5227       "export { x as y };" | 
| 5236       "import { q as z } from 'm.js';" | 5228       "import { q as z } from 'm.js';" | 
| 5237       "import n from 'n.js'"; | 5229       "import n from 'n.js'"; | 
| 5238   i::Handle<i::String> source = factory->NewStringFromAsciiChecked(kSource); | 5230   i::Handle<i::String> source = factory->NewStringFromAsciiChecked(kSource); | 
| 5239   i::Handle<i::Script> script = factory->NewScript(source); | 5231   i::Handle<i::Script> script = factory->NewScript(source); | 
| 5240   i::Zone zone; | 5232   i::Zone zone; | 
| 5241   i::ParseInfo info(&zone); | 5233   i::ParseInfo info(&zone, script); | 
| 5242   info.InitializeFromScript(script); |  | 
| 5243   i::AstValueFactory avf(&zone, isolate->heap()->HashSeed()); | 5234   i::AstValueFactory avf(&zone, isolate->heap()->HashSeed()); | 
| 5244   i::Parser parser(&info); | 5235   i::Parser parser(&info); | 
| 5245   parser.set_allow_harmony_modules(true); | 5236   parser.set_allow_harmony_modules(true); | 
| 5246   parser.set_allow_harmony_scoping(true); | 5237   parser.set_allow_harmony_scoping(true); | 
| 5247   info.set_module(); | 5238   info.set_module(); | 
| 5248   CHECK(parser.Parse(&info)); | 5239   CHECK(parser.Parse(&info)); | 
| 5249   CHECK(i::Compiler::Analyze(&info)); | 5240   CHECK(i::Compiler::Analyze(&info)); | 
| 5250 | 5241 | 
| 5251   i::FunctionLiteral* func = info.function(); | 5242   i::FunctionLiteral* func = info.function(); | 
| 5252   i::Scope* module_scope = func->scope(); | 5243   i::Scope* module_scope = func->scope(); | 
| (...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 5357   i::Factory* factory = isolate->factory(); | 5348   i::Factory* factory = isolate->factory(); | 
| 5358   v8::HandleScope handles(CcTest::isolate()); | 5349   v8::HandleScope handles(CcTest::isolate()); | 
| 5359   v8::Handle<v8::Context> context = v8::Context::New(CcTest::isolate()); | 5350   v8::Handle<v8::Context> context = v8::Context::New(CcTest::isolate()); | 
| 5360   v8::Context::Scope context_scope(context); | 5351   v8::Context::Scope context_scope(context); | 
| 5361   isolate->stack_guard()->SetStackLimit(i::GetCurrentStackPosition() - | 5352   isolate->stack_guard()->SetStackLimit(i::GetCurrentStackPosition() - | 
| 5362                                         128 * 1024); | 5353                                         128 * 1024); | 
| 5363 | 5354 | 
| 5364   i::Handle<i::Script> script = | 5355   i::Handle<i::Script> script = | 
| 5365       factory->NewScript(factory->NewStringFromAsciiChecked(source)); | 5356       factory->NewScript(factory->NewStringFromAsciiChecked(source)); | 
| 5366   i::Zone zone; | 5357   i::Zone zone; | 
| 5367   i::ParseInfo info(&zone); | 5358   i::ParseInfo info(&zone, script); | 
| 5368   info.InitializeFromScript(script); |  | 
| 5369   i::Parser parser(&info); | 5359   i::Parser parser(&info); | 
| 5370   parser.set_allow_strong_mode(true); | 5360   parser.set_allow_strong_mode(true); | 
| 5371   info.set_global(); | 5361   info.set_global(); | 
| 5372   parser.Parse(&info); | 5362   parser.Parse(&info); | 
| 5373   CHECK(info.function() != NULL); | 5363   CHECK(info.function() != NULL); | 
| 5374   CHECK_EQ(expected_language_mode, info.function()->language_mode()); | 5364   CHECK_EQ(expected_language_mode, info.function()->language_mode()); | 
| 5375 } | 5365 } | 
| 5376 | 5366 | 
| 5377 | 5367 | 
| 5378 TEST(LanguageModeDirectives) { | 5368 TEST(LanguageModeDirectives) { | 
| (...skipping 208 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 5587       "(a/*\n*/=> a)(1)", | 5577       "(a/*\n*/=> a)(1)", | 
| 5588       "((a)\n=> a)(1)", | 5578       "((a)\n=> a)(1)", | 
| 5589       "((a)/*\n*/=> a)(1)", | 5579       "((a)/*\n*/=> a)(1)", | 
| 5590       "((a, b)\n=> a + b)(1, 2)", | 5580       "((a, b)\n=> a + b)(1, 2)", | 
| 5591       "((a, b)/*\n*/=> a + b)(1, 2)", | 5581       "((a, b)/*\n*/=> a + b)(1, 2)", | 
| 5592       NULL}; | 5582       NULL}; | 
| 5593   static const ParserFlag always_flags[] = {kAllowHarmonyArrowFunctions}; | 5583   static const ParserFlag always_flags[] = {kAllowHarmonyArrowFunctions}; | 
| 5594   RunParserSyncTest(context_data, data, kError, NULL, 0, always_flags, | 5584   RunParserSyncTest(context_data, data, kError, NULL, 0, always_flags, | 
| 5595                     arraysize(always_flags)); | 5585                     arraysize(always_flags)); | 
| 5596 } | 5586 } | 
| OLD | NEW | 
|---|