Chromium Code Reviews| Index: test/cctest/test-parsing.cc |
| diff --git a/test/cctest/test-parsing.cc b/test/cctest/test-parsing.cc |
| index b12098a85a19e5352471686389ca8387a1789031..c1972e0f267205bf1610f931eddc95a3d6952531 100644 |
| --- a/test/cctest/test-parsing.cc |
| +++ b/test/cctest/test-parsing.cc |
| @@ -108,6 +108,14 @@ TEST(ScanKeywords) { |
| } |
| +bool ParseDataHasError(i::ScriptData* sd) { |
| + i::ParseData pd(sd); |
| + bool result = pd.HasError(); |
| + delete sd; |
| + return result; |
| +} |
| + |
| + |
| TEST(ScanHTMLEndComments) { |
| v8::V8::Initialize(); |
| v8::Isolate* isolate = CcTest::isolate(); |
| @@ -157,8 +165,7 @@ TEST(ScanHTMLEndComments) { |
| preparser.set_allow_lazy(true); |
| i::PreParser::PreParseResult result = preparser.PreParseProgram(); |
| CHECK_EQ(i::PreParser::kPreParseSuccess, result); |
| - i::ScriptData data(log.ExtractData()); |
| - CHECK(!data.has_error()); |
| + CHECK(!ParseDataHasError(log.GetScriptData())); |
| } |
| for (int i = 0; fail_tests[i]; i++) { |
| @@ -173,8 +180,7 @@ TEST(ScanHTMLEndComments) { |
| i::PreParser::PreParseResult result = preparser.PreParseProgram(); |
| // Even in the case of a syntax error, kPreParseSuccess is returned. |
| CHECK_EQ(i::PreParser::kPreParseSuccess, result); |
| - i::ScriptData data(log.ExtractData()); |
| - CHECK(data.has_error()); |
| + CHECK(ParseDataHasError(log.GetScriptData())); |
| } |
| } |
| @@ -306,8 +312,9 @@ TEST(StandAlonePreParser) { |
| preparser.set_allow_natives_syntax(true); |
| i::PreParser::PreParseResult result = preparser.PreParseProgram(); |
| CHECK_EQ(i::PreParser::kPreParseSuccess, result); |
| - i::ScriptData data(log.ExtractData()); |
| - CHECK(!data.has_error()); |
| + i::ScriptData* data = log.GetScriptData(); |
| + CHECK(!i::ParseData(data).HasError()); |
| + delete data; |
| } |
| } |
| @@ -339,9 +346,10 @@ TEST(StandAlonePreParserNoNatives) { |
| preparser.set_allow_lazy(true); |
| i::PreParser::PreParseResult result = preparser.PreParseProgram(); |
| CHECK_EQ(i::PreParser::kPreParseSuccess, result); |
| - i::ScriptData data(log.ExtractData()); |
| + i::ScriptData* data = log.GetScriptData(); |
| // Data contains syntax error. |
| - CHECK(data.has_error()); |
| + CHECK(i::ParseData(data).HasError()); |
| + delete data; |
| } |
| } |
| @@ -407,8 +415,7 @@ TEST(RegressChromium62639) { |
| i::PreParser::PreParseResult result = preparser.PreParseProgram(); |
| // Even in the case of a syntax error, kPreParseSuccess is returned. |
| CHECK_EQ(i::PreParser::kPreParseSuccess, result); |
| - i::ScriptData data(log.ExtractData()); |
| - CHECK(data.has_error()); |
| + CHECK(ParseDataHasError(log.GetScriptData())); |
| } |
| @@ -438,15 +445,16 @@ TEST(Regress928) { |
| preparser.set_allow_lazy(true); |
| i::PreParser::PreParseResult result = preparser.PreParseProgram(); |
| CHECK_EQ(i::PreParser::kPreParseSuccess, result); |
| - i::ScriptData data(log.ExtractData()); |
| - CHECK(!data.has_error()); |
| - data.Initialize(); |
| + i::ScriptData* sd = log.GetScriptData(); |
| + i::ParseData pd(sd); |
| + CHECK(!pd.HasError()); |
| + pd.Initialize(); |
| int first_function = |
| static_cast<int>(strstr(program, "function") - program); |
| int first_lbrace = first_function + i::StrLength("function () "); |
| CHECK_EQ('{', program[first_lbrace]); |
| - i::FunctionEntry entry1 = data.GetFunctionEntry(first_lbrace); |
| + i::FunctionEntry entry1 = pd.GetFunctionEntry(first_lbrace); |
| CHECK(!entry1.is_valid()); |
| int second_function = |
| @@ -454,9 +462,10 @@ TEST(Regress928) { |
| int second_lbrace = |
| second_function + i::StrLength("function () "); |
| CHECK_EQ('{', program[second_lbrace]); |
| - i::FunctionEntry entry2 = data.GetFunctionEntry(second_lbrace); |
| + i::FunctionEntry entry2 = pd.GetFunctionEntry(second_lbrace); |
| CHECK(entry2.is_valid()); |
| CHECK_EQ('}', program[entry2.end_pos() - 1]); |
| + delete sd; |
| } |
| @@ -1134,13 +1143,13 @@ TEST(ScopePositions) { |
| } |
| -i::Handle<i::String> FormatMessage(i::ScriptData* data) { |
| +i::Handle<i::String> FormatMessage(i::ParseData* pd) { |
| i::Isolate* isolate = CcTest::i_isolate(); |
| i::Factory* factory = isolate->factory(); |
| - const char* message = data->BuildMessage(); |
| + const char* message = pd->BuildMessage(); |
| i::Handle<i::String> format = v8::Utils::OpenHandle( |
| *v8::String::NewFromUtf8(CcTest::isolate(), message)); |
| - const char* arg = data->BuildArg(); |
| + const char* arg = pd->BuildArg(); |
| i::Handle<i::JSArray> args_array = factory->NewJSArray(arg == NULL ? 0 : 1); |
| if (arg != NULL) { |
| i::JSArray::SetElement( |
| @@ -1211,7 +1220,9 @@ void TestParserSyncWithFlags(i::Handle<i::String> source, |
| i::PreParser::PreParseResult result = preparser.PreParseProgram(); |
| CHECK_EQ(i::PreParser::kPreParseSuccess, result); |
| } |
| - i::ScriptData data(log.ExtractData()); |
| + |
| + i::ScriptData* sd = log.GetScriptData(); |
|
marja
2014/07/09 17:28:51
Btw, in these tests, would it be possible to extra
Yang
2014/07/10 08:28:46
Done. Also got rid of a bunch of methods from Pars
|
| + i::ParseData pd(sd); |
| // Parse the data |
| i::FunctionLiteral* function; |
| @@ -1246,7 +1257,7 @@ void TestParserSyncWithFlags(i::Handle<i::String> source, |
| CHECK(false); |
| } |
| - if (!data.has_error()) { |
| + if (!pd.HasError()) { |
|
marja
2014/07/09 14:42:30
Alright, now I remember why I didn't remove the "S
Yang
2014/07/10 08:28:46
Changed to use the log.
|
| v8::base::OS::Print( |
| "Parser failed on:\n" |
| "\t%s\n" |
| @@ -1257,7 +1268,7 @@ void TestParserSyncWithFlags(i::Handle<i::String> source, |
| CHECK(false); |
| } |
| // Check that preparser and parser produce the same error. |
| - i::Handle<i::String> preparser_message = FormatMessage(&data); |
| + i::Handle<i::String> preparser_message = FormatMessage(&pd); |
| if (!i::String::Equals(message_string, preparser_message)) { |
| v8::base::OS::Print( |
| "Expected parser and preparser to produce the same error on:\n" |
| @@ -1270,14 +1281,14 @@ void TestParserSyncWithFlags(i::Handle<i::String> source, |
| preparser_message->ToCString().get()); |
| CHECK(false); |
| } |
| - } else if (data.has_error()) { |
| + } else if (pd.HasError()) { |
| v8::base::OS::Print( |
| "Preparser failed on:\n" |
| "\t%s\n" |
| "with error:\n" |
| "\t%s\n" |
| "However, the parser succeeded", |
| - source->ToCString().get(), FormatMessage(&data)->ToCString().get()); |
| + source->ToCString().get(), FormatMessage(&pd)->ToCString().get()); |
| CHECK(false); |
| } else if (result == kError) { |
| v8::base::OS::Print( |
| @@ -1287,6 +1298,8 @@ void TestParserSyncWithFlags(i::Handle<i::String> source, |
| source->ToCString().get()); |
| CHECK(false); |
| } |
| + |
| + delete sd; |
| } |
| @@ -2165,22 +2178,21 @@ TEST(DontRegressPreParserDataSizes) { |
| factory->NewStringFromUtf8(i::CStrVector(program)).ToHandleChecked(); |
| i::Handle<i::Script> script = factory->NewScript(source); |
| i::CompilationInfoWithZone info(script); |
| - i::ScriptData* data = NULL; |
| - info.SetCachedData(&data, i::PRODUCE_CACHED_DATA); |
| + i::ScriptData* sd = NULL; |
| + info.SetCachedData(&sd, i::PRODUCE_CACHED_DATA); |
| i::Parser::Parse(&info, true); |
| - CHECK(data); |
| - CHECK(!data->HasError()); |
| + i::ParseData pd(sd); |
| + CHECK(!pd.HasError()); |
| - if (data->function_count() != test_cases[i].functions) { |
| + if (pd.FunctionCount() != test_cases[i].functions) { |
| v8::base::OS::Print( |
| "Expected preparse data for program:\n" |
| "\t%s\n" |
| "to contain %d functions, however, received %d functions.\n", |
| - program, test_cases[i].functions, |
| - data->function_count()); |
| + program, test_cases[i].functions, pd.FunctionCount()); |
| CHECK(false); |
| } |
| - delete data; |
| + delete sd; |
| } |
| } |